또한 Web안에는 CoreNetwork가 존재하며 SK, KT등이 제공하는 통신망을 통하여 router들이 존재하고 이 라우터를 통해서 목적지에 기반하여 요청을 redirect하는 것이다.
let result = fetch(serverURL)
result
.then(response => {
if (response.ok) {
// 요청 성공
}
})
.catch(error => {
// 요청 실패
})
XMLHTTPRequest
를 대체하는 HTTP 요청 APIXMLHTTPRequest
과의 차이점은 ES6
에 추가된 Promise
를 리턴하도록 정의됨.fetch(serverURL)
.then(response => {
response.ok
response.status
response.statusText
response.url
response.bodyUsed
})
fetch(serverURL)
.then(resp => {
for (let [k,v] of resp.headers){
console.log(k,v)
}
})
fetch(serverURL)
.then(response => {
return response.json()
})
.then(json => {
console.log("body :",json)
})
Promise
를 반환한다.fetch(serverURL. {
method : 'post', // get, post, put, patch, delete 같은 게 들어감
headers : {
'Content-Type' : 'application/json;charset=utf-8',
Authentication : 'mysecret'
},
body : JSON.stringify(formData)
}) // 여기까지 요청을 받아서 처리
.then(response => {
return response.json()
})
.then(json => {
console.log("POST 요청결과 :", json)
})
function transformUser(user){
const {first, last} = user.name
const { country, state, city} = user.location
const email = user.email
const name = `${first} ${last}`
const pictureUrl = user.picture.large
const username = user.login.username
const location = `${country}, ${state}, ${city}`
const age = user.dob.age
return {email, name, pictureUrl, username, location, age}
}
incrementSync: function () {
// 동기적으로 3초 뒤에 this.count를 증가하세요.
// while 문 안에서, 또 다른 Date.now()를 구하여 3000을 초과하는 순간
// while 문을 벗어나게 구현하세요.
const currentTime = Date.now();
while (true) {
const now = Date.now();
if (now - currentTime > 3000) break;
}
this.count++;
},
incrementAsync: function (callback) {
// 비동기적으로 3초 뒤에 this.count를 증가하며 callback을 호출하도록 구현하세요.
// setTimeout을 활용하세요.
setTimeOut(() => {
this.count++;
callback();
}, 3000);
},
};
// 지시사항을 참고하여 searchAddress() 함수를 구현하세요.
function searchAddress() {
error = '';
`
findUserByUsername(value)
.then(user => {
const { id, username, email } = user;
return findAddressByUserId(id);
})
.then(address => {
return address;
});
`;
return findUserByUsername(value)
.then(user => findAddressByUserId(user.id))
.catch(e => {
error = e.message;
});
}
return { getError, getValue, setValue, searchAddress };
};
const wait = ms => {
return new Promise((resolve, reject) => {
setTimeout(resolve, ms);
});
};
`const wait = ms => new Promise(resolve => setTimeout(resolve, ms));`
function createUserListItem(user) {
return `<li style="list-style:none"><pre><code>${JSON.stringify(
user,
null,
2
)}</code></pre></li>`;
}