이벤트 루프란
👉 Callback Queue에 할당된 순서에 맞춰 Call Stack에 할당해주는 루프.
- 콜백 함수의 여러 문제점과 한계를 극복하기 위해 JavaScript는 Event Loop을 추가하였다.
- 멀티 스레드 환경과 동일하게 처리할 수 있는 환경 기반을 관리한다.
- 콜 스택과 콜백 큐를 주시하다가 콜 스택이 비워지면 큐의 첫 번째 콜백을 스택에 쌓는 역할을 한다.
- Fetch API의 Request, addEventListener와 비슷한 방식
이벤트 루프의 단계 (Node.js)
👉 이벤트 루프는 각 단계(페이즈) 별로 구성이 되어 동작한다.
👉 Node.js는 기동 시 자동으로 Event Loop가 로딩되도록 설계되어 있다.

-
Timer Phase
- 이벤트 루프의 시작을 알리는 단계.
- setTimeout(), setInterval()에 의해 예약된 callback 실행
-
Pending callbacks phase
- 루프 반복으로 지연된 I/O callback 실행
-
idel, prepare phase
-
poll phase
- 새로운 I/O 이벤트를 검색하여, I/O 관련 callback을 실행
- close callback, scheduled by timer callback, setImmediate()은 제외한다.
-
check phase
- setImmediate() callback 실행
-
close callbacks phase
- socket.on('close',...)와 같은 callback close 실행