비동기 처리를 위한 패턴 중 하나인 콜백 패턴의 단점을 보완하기 위해 Promise 도입 45.1 비동기 처리를 위한 콜백 패턴의 단점1. 콜백 헬비동기 함수는 비동기 처리 결과를 외부에 반환할 수 없고, 상위 스코프의 변수에 할당할 수도 없음-> 비동기 함수의 처리 결과를 다루려면 비동기 함수 내부에서 수행해야 함성공/실패 시 수행할 동작을 콜백 함수로 전달const get = (url, successCallback, failureCallback) => { const xhr = new XMLHttpRequest(); xhr.open('GET', url); xhr.send(); xhr.onload = () => { if (xhr.status === 200) successCallback(J..
RESTHTTP의 장점을 최대한 활용할 수 있는 아키텍처REST의 기본 원칙을 성실히 지킨 서비스 디자인을 RESTful이라고 표현 44.1 REST API의 구성구성 요소내용표현 방법자원resource자원URI(엔드포인트)행위verb자원에 대한 행위HTTP 요청 메서드표현representations자원에 대한 행위의 구체적 내용페이로드 44.2 REST API 설계 원칙1. URI는 리소스를 표현해야 함2. 리소스에 대한 행위는 HTTP 요청 메서드로 표현(URI에 표현하지 않음)HTTP 요청 메서드종류목적페이로드GETindex/retrieve모든/특정 리소스 취득XPOSTcreate리소스 생성OPUTreplace리소스의 전부 교체OPATCHmodify리소스의 일부 수정ODELETEdelete모든/특정..
43.1 Ajax자바스크립트를 사용하여 브라우저가 서버에게 비동기 방식으로 데이터를 요청하고, 서버가 응답한 데이터를 수신하여 웹페이지를 동작으로 갱신하는 프로그래밍 방식 Web API XMLHttpRequest 객체(비동기 통신을 위한 메서드와 프로퍼티 제공) 기반 동작 이전엔 HTML을 서버로부터 받아 웹페이지 전체를 처음부터 다시 렌더링하는 방식으로 동작- 변경할 필요가 없는 부분까지 다시 전송받아 불필요한 데이터 통신 발생- 변경할 필요가 없는 부분까지 다시 렌더링 -> 화면 깜빡임- 클라이언트와 서버의 통신이 동기 방식으로 동작하기 때문에 서버 응답이 있을 때까지 블로킹 Ajax의 등장으로 변경이 필요한 데이터만 비동기 방식으로 전송받아 한정적으로 렌더링할 수 있게 됨-> 브라우저에서도 데스크톱..
1. 동기 처리와 비동기 처리함수 실행 컨텍스트가 실행 컨텍스트 스택(콜 스택)에 푸시되면 함수 실행자바스크립트 엔진은 하나의 실행 컨텍스트 스택을 가짐 동기 처리현재 실행 중인 태스크가 종료할 때까지 다음에 실행될 태스크가 대기하는 방식장: 실행 순서 보장단: 이전 태스크가 종료할 때까지 이후 태스크들이 블로킹됨 비동기 처리태스크가 종료되지 않은 상태라도 다음 태스크를 곧바로 실행하는 방식장: 블로킹이 발생하지 않음단: 실행 순서 보장 XsetTimeout, setInterval, HTTP 요청, 이벤트 핸들러 비동기 함수는 콜백 함수를 사용하는데 콜백 패턴은- 콜백 헬을 발생시켜 가독성이 떨어지고,- 에러의 예외 처리가 어려우며,- 여러 개의 비동기를 한 번에 처리하는 데 한계가 있음-> 45장 프로..
41.1 호출 스케줄링타이머 함수는 빌트인 함수(ECMAScript)가 아닌브라우저와 Node.js에서 제공하는 호스트 객체 자바스크립트 엔진은 싱글 스레드이기 때문에 비동기 처리 방식으로 동작 41.2 타이머 함수setTimeout(func[, delay, param1, param2, ... ])delay 후 즉시 호출을 보장하지는 않음(태스크큐에 등록하는 시간 지연)params 콜백 함수에 인수 전달timerId 반환 - 브라우저는 숫자, Node.js는 객체 clearTimeout(timerId) 타이머 취소 setInterval( func[, delay, param1, param2, ... ])delay 전달 받은 시간으로 반복 동작하는 타이머 생성 clearInterval(timerId) 타이머..
