자바스크립트 이벤트 루프 관련 영상을 보다가 이해가 안돼서 꺼버렸던 기억이 스멀스멀 올라와 각잡고 정리해본다...(진작 했어야지)
Execution Context Stack (ECS, 콜스택과 같은 말임)
주 실행 컨텍스트
✏️ JavaScript 엔진에는 콜스택이 하나만 있어서 맨 위에 있는 하나의 Execution(함수)만 실행 할 수 있다. ⇒ JavaScript가 싱글 스레드인 이유
Heap
JavaScript 엔진은, 그래 알겠어. 근데 우리가 자주하는 HTTP통신 요청을 한다고 했을 때 자바스크립트 엔진 혼자 뭘 할 수 있는데?
Web API
Queue
Promise
의 then
메서드 와 같은 녀석들이 여기에 위치함. 현재 실행 중인 작업이 완료되면 이 큐에서 작업을 가져와 실행한다.Event loop
❗️실제 실행은 무조건 CallStack(ECS)에서 실행되어야 한다.
JavaScript Engine 외의 JRE(JavaScript Runtime Environment)
는 JavaScript의 비동기쪽을 담당하기 때문이다.
이 덕에 JavaScript가 EventListener를 추가하고 동시에 HTTP요청을 하는 등의 작업을 수행할 수 있어 멀티 스레드처럼 동작하게 되는 것이다.