TIL23: Asynchronous JavaScript and XHR

charlie-lyc·2020년 11월 29일
0

Immersive Course TIL

목록 보기
23/39
post-thumbnail

Dynamic Web Page

  • 과거의 웹 페이지상에서 이루지는 요청과 그에 따른 응답은 페이지를 전환(새로운 페이지 전체를 로딩)하여 처리하였습니다.
  • 하지만 오늘날의 SPA(Single Page Application)에서는 서버의 응답에 따라 페이지의 일부만 업데이트(페이지의 구성 요소를 동적으로 변경)하여 처리합니다.
  • 즉, 단순한 Web Page가 아닌, 서버와 자유롭게 통신하고 페이지의 깜빡임 없이 매끄럽게 작동하는 Web App등장하게 되었습니다.
  • Web App의 등장을 가능하게 한 것은 바로 1. JavaScript2. DOM 그리고 3. XHR(XMLHttpRequest)[ 또는 jQuery, Fetch API] 입니다. [하나 더 추가하자면 4. CORS(Cross-Origin Resource Sharing) 까지] 이들을 통틀어 AJAX(Asynchronous JavaScript and XHR) 라고 부릅니다.
// Using XHR
var xhr = new XMLHttpRequest();
xhr.open('get', 'http://localhost:3000/messages');
// 요청의 상태 변화를 추적
xhr.onreadystatechange = function() {
  // readyState 4: 완료
  if(xhr.readyState !== 4) return;
  // status 200: 성공
  if(xhr.status === 200) {
    console.log(xhr.responseText); // 서버로부터 온 응답
  } else {
    console.log('에러: ' + xhr.status); // 요청 도중 에러 발생
  }
}
xhr.send(); // 요청 전송
// Using jQuery ajax
$.get('http://localhost:3000/messages', function(response) {
  // response: 서버로부터 온 응답
});
// Using fetch API
fetch('http://localhost:3000/messages')
  .then(function(response) {
    return response.json();
  }).then(function(json) {
    // json 형태로 전달받은 서버로부터의 응답
  });

최근에 개발된 표준 APIfetch가 보다 쓰기 쉽고 편리하지만, 여전히 XHRjQuery 또한 많이 쓰이는 기술이므로 차이점을 분명히 알고 사용법 또한 익혀 두어야 Legacy Code에 대해 이해할 수 있습니다.

코드 및 자료 출처: 코드스테이츠(CodeStates)

0개의 댓글