글 작성자: 망고좋아
반응형

🎯 Node.js 이벤트 루프

  • 이벤트(event)를 처리하는 반복되는 동작(loop)이다.
  • 즉, Node.js가 비동기-이벤트 동작을 처리하는 일련의 반복 동작이다.
  • 이벤트 루프는 Node.js만의 특징은 아니다.
  • JavaScript의 일반적인 동작 방식으로, 브라우저에도 있다.
  • 브라우저와 Node.js의 이벤트 루프는 기본적인 동작 방식에 큰 차이가 없다.

 

📝 이벤트 루프 구성요소

📕 Call Stack

  • 작성된 함수들이 등록되는 LIFO 스택
  • 이벤트 루프는 콜스택이 비어있을 때까지 스택의 함수를 실행

 

📕 Message Queue

  • setTimeout 같은 지연 실행 함수를 등록하는 FIFO 큐
  • 정해진 timing이 끝나고, 콜스택이 비어있을 경우 등록된 함수를 콜스택에 추가
  • 콜스택이 비어있을 때까지 즉, 모든 함수가 종료될 때까지 대기하다가 콜스택에 추가하여 실행된다.

 

📕 Job Queue

  • Promise에 등록된 콜백을 등록하는 FIFO 큐
  • 상위 함수가 종료되기 전에 콜스택이 비어있지 않더라도 잡큐에 등록된 콜백을 콜스택에 추가
  • D과정은 그림에서 생략

 

🏷 요약

  • 이벤트 루프는 비동기 동작의 실행 타이밍을 이해하는 것이 중요하다,
  • setTimeout 은 콜스택이 비어있을 때 실행된다.
  • Promise는 상위 함수가 종료되기 전에 실행된다.
반응형