
또한 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>`;
}