#event loop
#frontend
#javascript
Written by Paul
힙 (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
를 사용하는 비동기 함수들이 여기에 속합니다.
이벤트 루프는 호출 스택을 확인합니다. 호출 스택이 비어 있으면, 이벤트 루프는 큐에 쌓인 함수들을 호출 스택으로 옮겨 실행합니다. 이미 제공된 함수들이 더 높은 우선순위를 가지며, 메시지 큐의 함수들보다 먼저 실행됩니다.