자바스크립트의 비동기
자바스크립트 엔진은 비동기 처리를 제공하지 않는다.
대신 비동기 코드로 정해진 함수를 제공항여 활용할 수 있다.
이러한 함수를 API라고 하며, setTimeout, XMLHttpRequest,fetch 등이 있음
node.js의 경우 파일 처리 API, 암호화 API등을 제공한다.
비동기 코드를 처리하는 모듈은 자바 스크립트 엔진 외부에 있음
이벤트 루프(event loop), task queue, job queue등으로 구성된다.
API모듈은 비동기 요청을 처리후 태스크 큐에 콜백 함수를 넣는다.
자바스크립트 엔진은 콜 스택이 비워지면, 태스크 큐의 콜백함수를 실행
Promise API
promise API는 비동기 API중하나
태스크 큐가 아닌 잡큐를 사용한다.(job queue == microtask queue)
job queue는 task queue 보다 실행 우선 순위가 높다.
비동기 작업의 진행, 성공, 실패 상태를 표현한다.
pending : 진행
fullfiled, resolved : 성공 ⇒ .then()
rejected : 실패 ⇒ .catch()
완료 : .finally()
비동기 처리의 순서를 표현할 수 있다.
인위적으로 promise chain을 만들수 있다.