Written by
nodejs-style
on
on
[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