자바스크립트 이벤트 루프

HAPPY JM·2022년 5월 2일
0

JavaScript

목록 보기
7/7

API 란?

자바스크립트 엔진은 비동기 처리를 제공하지 않는다.
-> 비동기 코드는 정해진 함수( = API )를 제공하여 활용 이 가능하다.

비동기 API 모듈의 예시

다음은 Web API이다.
1. setTimeout
2. XMLHttpRequest
3. fetch

node.js 의 경우 파일 처리 API, 암호화 API등을 제공함 + 이벤트 루프는 node.js에서 libuv 라는 모듈에서 비동기 처리를 담당함

비동기 처리 모델

  1. 비동기 코드를 처리하는 모듈은 자바스크립트 엔진 외부에 있다.
  2. 모듈은 event loop, task queue, job queue 등으로 구성된다.
  3. API 모듈은 비동기 요청을 처리후에 태스크 큐에 콜백 함수를 넣는다.
  4. 자바스크립트 엔진은 콜 스택이 비워지면, 태스크 큐의 콜백 함수를 실행한다. (콜 스택이 비워지는 걸 기다렸다가 태스크 큐에서 콜백함수를 꺼냄)
  5. Queue는 FIFO 이기 때문에 이벤트 루프가 콜 스택이 비워졌을 때, 태스크 큐에서 콜백 함수가 들어온 순서대로 함수를 내보낸다.
    단, 큐는 여러 개가 존재하며 그 중 우선순위가 높은 큐(job queue 같은) 에서 나중에 들어온 콜백 함수가 실행될 수 있다.
profile
Junior FE Engineer | work @Pangyo

0개의 댓글