[javascript] Event Loop의 동작 방식

자바스크립트에서 Event Loop는 비동기 코드를 처리하는 핵심 메커니즘입니다. 이벤트 루프는 단일 스레드 환경에서 이벤트 처리와 콜백 실행을 관리하여 웹 브라우저나 Node.js 환경에서 비동기 코드를 처리합니다.

이벤트 루프의 동작 방식을 간단히 설명하면 다음과 같습니다.

이벤트 루프의 동작 순서

  1. Call Stack(호출 스택)
    • 코드 실행 및 함수 호출을 처리하는 스택 구조로, 현재 실행 중인 함수 및 관련 정보를 추적합니다.
  2. Web APIs
    • 브라우저 환경에서는 DOM 이벤트, HTTP 요청, 타이머와 관련된 비동기 작업 등을 처리하기 위한 API를 제공합니다. Node.js 환경에서는 파일 시스템 액세스, 네트워크 요청 등을 처리합니다.
  3. Callback Queue(콜백 대기열)
    • Web APIs에서 비동기 작업이 완료되면 해당 작업에 대한 콜백 함수가 콜백 대기열에 추가됩니다.
  4. Event Loop(이벤트 루프)
    • 이벤트 루프는 호출 스택이 비어있는지 확인한 후, 비어있으면 콜백 대기열에서 콜백 함수를 호출 스택으로 이동시킵니다.
  5. Microtasks Queue(마이크로태스크 대기열)
    • Promise 및 process.nextTick과 같은 마이크로태스크는 이벤트 루프 단계 마다 확인됩니다.

이러한 동작 방식으로, 이벤트 루프는 코드 실행과 이벤트 처리를 효율적으로 관리하여 비동기 동작을 지원합니다.

이벤트 루프에 대한 더 자세한 내용은 MDN web docs에서 확인할 수 있습니다.

이러한 메커니즘을 이해하면 비동기 코드를 작성하고 디버깅하는 데 도움이 될 것입니다.