[21/12/04] 노드JS - 호출 스택, 백그라운드, 태스크 큐

[21/12/04] 노드JS - 호출 스택, 백그라운드, 태스크 큐

코드를 실행했을 때 그 코드는 호출 스택에 쌓인다.

그런데 setTimeout 같은 함수를 만나면 이 함수는 백그라운드에서 작업을 한다.

호출스택의 모든 작업이 실행되면 이후 백그라운드에 놓여져 있는 함수가 호출스택으로 이동.

여기서 백그라운드에서 호출스택으로 직접적으로 이동하는게 아니라 태스크 큐라는 곳을 한번 더 거친다.

태스크 큐는 마이크로태스크 큐, 매크로태스크 큐로 나뉘는데 우선 순위가 마이크로태스크 큐가 더 높다.

즉 코드상 setTimeout이 먼저 실행될 순서라고 해도 해당 함수 내부에 Promise가 있으면 Promise가 먼저 실행되고

그 후에 setTimeout() 이 실행됨.

아래 그림은 이해를 돕기 위한 그림 파일

from http://codingfeed.tistory.com/5 by ccl(A) rewrite - 2021-12-04 17:26:49