브라우저의 이벤트 루프 (feat. 매크로 태스크와 마이크로 태스크)

#event loop

#frontend

#javascript

Written by Paul
notion image

힙 (Heap)

힙은 함수에서 선언된 객체와 변수들을 저장합니다.

호출 스택 (Call Stack)

호출 스택은 함수들을 LIFO(Last In, First Out) 방식으로 쌓습니다.
즉, 마지막에 들어온 함수가 가장 먼저 실행됩니다.

웹 API (Web API)

웹 API는 V8 엔진에서 제공하는 추가 기능들입니다.
웹 API를 사용하는 함수들은 이 컨테이너에 저장됩니다. 웹 API 작업이 완료되면, 해당 함수는 호출 스택에서 제거됩니다.

큐 (Queues)

큐는 비동기 함수의 응답을 계산합니다.
이 응답들은 엔진을 차단하지 않습니다.
매크로 태스크 큐 (Macro Task Queue)
  • 메시지 큐보다 우선순위가 낮은 비동기 함수들을 실행합니다.
  • DOM 이벤트, Ajax 호출, setTimeout 등이 여기서 실행됩니다.
마이크로 태스크 큐 (Micro Task Queue)
  • 메시지 큐보다 우선순위가 높은 비동기 함수들을 실행합니다.
  • 주로 Promise를 사용하는 비동기 함수들이 여기에 속합니다.
이벤트 루프는 호출 스택을 확인합니다. 호출 스택이 비어 있으면, 이벤트 루프는 큐에 쌓인 함수들을 호출 스택으로 옮겨 실행합니다. 이미 제공된 함수들이 더 높은 우선순위를 가지며, 메시지 큐의 함수들보다 먼저 실행됩니다.
← Go home