Event Loop

KanDohyung·2025년 1월 6일

개념정리

목록 보기
24/28

비동기 작업을 효율적으로 작업하기 위한 매커니즘
자바스크립트는 싱글 스레드 언어이므로 비동기 작업을 효율적으로 처리하기 위해 사용함

구성요소

  1. Call Stack
    • 자바스크립트 엔진이 현재 실행 중인 코드나 함수 호출을 관리함
    • 함수가 호출되면 스택에 추가되고, 실행이 완료되면 스택에서 제거됨
  2. Task Queue
    비동기 작업이 완료된 후 실행 대기 상태로 큐에 저장됨
    • Microtask Queue
      • Promise.then()과 같이 중요도가 높은 작업들이 대기하는 큐
      • 일반 Task보다 우선적으로 처리됨
    • Macrotask Queue
      • setTimeout, setInterval 같은 일반적인 비동기 작업들이 대기하는 큐
  3. Web APIs
    • 브라우저가 제공하는 비동기 작업 처리 기능

작동방식

  • EventLoop : 계속해서 CallStack을 확인하고 있으며, 콜스택이 비어 있을때, 작업을 콜스택으로 이동시킴

    마이크로 테스크 큐가 우선순위를 가짐

    console.log같은 간단한 로직은 콜 스택에서 자체적으로 처리함

    WebAPI 기능 활용 ( Web API에 의해 타이머가 설정되고 만료되면 콜백 함수가 태스크 큐에 추가됨)
    현재 실행중인 모든 동기 작업이 완료된 후에 콜백이 실행됨

    Promise 작업을 처리하고 각 작업을 Task의 성질에 맞게 분배함

    자체적으로 처리하는 log가 먼저 출력

0개의 댓글