[JavaScript Deep Dive] 이벤트 루프

DAYEON·2021년 7월 15일
0

JavaScript Deep Dive

목록 보기
2/6
post-thumbnail

이벤트 루프란

👉 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

    • event loop 내부 동작을 위해 실행
  • 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 실행

profile
노력하는 초보 개발자

0개의 댓글