본문 바로가기
Javascript

마이크로태스크 큐(Microtask Queue)와 태스크 큐(Task Queue)

by 이매➰ 2024. 10. 26.

앞서 이벤트 루프에 대한 게시물에서

Web API를 통해 수행되는 비동기 작업의 경우 콜백 큐에 저장되었다가

이벤트 루프에 의해 콜 스택에 들어간 후 수행된다고 정리했다

 

비동기 작업의 경우 Web API를 통해 수행되는 작업도 있지만, 프로미스 메서드의 콜백 함수에 의해 수행되는 작업도 있다

 

마이크로태스크 큐(Microtask Queue)

  • 프로미스의 then, catch, finally 메서드의 콜백 함수와 같은 더 빠른 비동기 작업을 위한 큐
  • 이벤트 루프는 콜 스택이 비어 있을 때, 태스크 큐의 콜백보다 먼저 마이크로태스크 큐에 있는 콜백을 실행한다

태스크 큐(Task Queue)

  • 일반적인 비동기 작업(예: setTimeout, setInterval 등)으로부터 생성된 콜백 함수들이 저장되는 큐
  • 콜백 큐와 같은 의미로 사용되지만, 구체적으로는 태스크 큐가 더 광범위한 개념이다

 

예제

console.log("1");

setTimeout(() => {
    console.log("2");
}, 0);

Promise.resolve().then(() => {
    console.log("3");
}).then(() => {
    console.log("4");
});

console.log("5");

 

출력 결과

1
5
3
4
2

'Javascript' 카테고리의 다른 글

실행 컨텍스트  (0) 2024.10.29
이벤트 전파  (0) 2024.10.27
Javascript의 동작 원리 (이벤트 루프)  (0) 2024.10.26
비동기 처리  (1) 2024.10.25
JavaScript 특성  (0) 2024.10.25