44장 REST API
- REST : HTTP 기반으로 클라이언트가 서버의 리소스에 접근하는 방식을 규정한 아키텍처 (자원, 행위, 표현으로 구성된다.)
- REST API : REST 기반으로 서비스 API를 구현한 것
- RESTful : REST의 기본 원칙을 성실히 지킨 서비스 디자인
45장 프로미스 : 비동기 처리를 위한 패턴
비동기 함수 내부의 비동기로 동작하는 코드는 비동기 함수가 종료된 이후에 완료된다! 그래서 비동기 함수 내부의 비동기로 동작하는 코드에서 처리 결과를 외부로 반환하면 의도대로 동작하지 않는다!! 에러 처리가 곤란해진다!!! 그래서 프로미스를 사용하면 콜백 지옥을 벗어나서 에러처리를 보다 효율적으로 할 수 있다.
마이크로태스크 큐에는 프로미스의 후속 처리 메서드의 콜백 함수가 일시 저장된다. 그 외의 비동기 함수는 태스크 큐에 일시 저장된다. 마이크로태스크 큐는 태스크 큐보다 우선 순위가 높다.
46장 제너레이터와 async/await
코드 블록의 실행을 일시 중지했다가 필요한 시점에 재개할 수 있도록 하는 함수다. 함수 호출자에게 함수 실행의 제어권을 양도한다. 제너레이터는 function* 키워드로 선언하고 화살표 함수나 new 연산자로는 호출할 수 없다.
function* getDecFunc(){
yield 1;
}
제너레이터를 호출하면 제너레이터 객체를 생성해서 반환한다. 이 객체는 이터러블이면서 이터레이터다. 이러한 제너레이터의 특성을 활용하면 비동기 처리를 동기처럼 구현할 수 있다.
// 무한 이터러블을 생성하는 제너레이터 함수
const infiniteFibonacci = (function* () {
let [pre, cur] = [0, 1];
while (true) {
[pre, cur] = [cur, pre + cur];
yield cur;
}
}());
// infiniteFibonacci는 무한 이터러블이다.
for (const num of infiniteFibonacci) {
if (num > 10000) break;
console.log(num); // 1 2 3 5 8...2584 4181 6765
}
제너레이터보다 간단하고 가독성 좋게 비동기 처리를 동기처럼 처리할 수 있는 것은 async/await이다. contructor 메서드는 인스턴스를 반환해야하기 때문에 async 메서드가 될 수 없다. async 메서드는 프로미스를 반환한다.
'Today I Learned' 카테고리의 다른 글
모던 자바스크립트 Deep Dive 41장~43장 타이머/비동기/AJAX (0) | 2022.05.22 |
---|---|
모던 자바스크립트 Deep Dive 40장 이벤트 (0) | 2022.05.14 |
모던 자바스크립트 Deep Dive 39장 DOM (0) | 2022.05.14 |
모던 자바스크립트 Deep Dive 38장 브라우저의 렌더링 과정 (0) | 2022.05.14 |
모던 자바스크립트 Deep Dive 37장 Set과 Map (0) | 2022.05.09 |