← 질문 목록
#76깊이 0
Promise와 타이머 중 무엇이 먼저 실행되는가?
같은 턴에 예약됐다면 Promise 콜백이 보통 타이머보다 먼저 실행된다. 현재 태스크가 끝난 뒤 마이크로태스크 큐를 비우고 다음 타이머 태스크를 꺼내기 때문이다.
- 현재 태스크
그다음은 마이크로태스크입니다. Promise 콜백을 모두 처리한다
마이크로태스크그다음은 렌더링 기회입니다. 브라우저가 갱신할 수 있다
렌더링 기회그다음은 다음 태스크입니다. 타이머나 이벤트 하나를 처리한다
다음 태스크
Promise.then과 queueMicrotask는 마이크로태스크다. setTimeout 콜백은 태스크다. await 뒤의 연속 실행도 마이크로태스크로 재개된다.
마이크로태스크가 계속 새 작업을 넣으면 렌더링과 타이머가 굶는다. 긴 동기 코드도 루프를 막는다. Node.js는 단계별 세부 순서가 브라우저와 다르다.