# 이벤트 루프(event loop)
- 이벤트 루프는 구현방식으로 인해 붙여진 이름이며, 이벤트 루프는 보통 아래 코드와 유사합니다.
while(queue.waitForMessage()) {
queue.processNextMessage();
}
- 이벤트 루프는 javascript 실행환경인 브라우저에서 관리합니다.
# 이벤트 루프 동작방식
- 비어있는 태스크 큐에 1개의 태스크가 들어온 경우, 이벤트 루프에 의해 태스크가 큐에서 pop 됩니다.
- pop 된 태스크가 실행되면 javascript engine 에 의해 실행 가능한 코드범위로 실행 컨텍스트가 생성됩니다.
- 생성된 실행 컨텍스트는 콜 스택(Call Stack) 에 push 되고 실행됩니다.
- 코드 실행과정에서 생성되는 태스크는 태스큐 큐에 push 됩니다.
- 코드 실행이 완료되면 실행 컨텍스트는 콜 스택에서 pop 되고, 콜 스택이 비어지면 이벤트 루프는 태스크 큐를 확인하여 실행할 태스크가 있는지 확인합니다.
- 1 ~ 4 과정을 계속 반복합니다.
# 태스크 큐(Task Queue)
- 태스크 큐는 생성된 태스크가 적재되는 큐 입니다.
- 태스크 큐는 javascript 실행환경인 브라우저에 위치합니다.
- 태스크는 Web API 를 사용하는 경우 생성됩니다.
- 대표적인 Web API 에는 Window, Document, Event, XMLHttpRequest, Fetch 가 있습니다.
# 콜 스택(Call Stack)
- 실행 컨텍스트가 적재되는 스택 입니다.
- 콜 스택은 javascript engine 에 위치합니다.
- js 예제코드를 통한 콜 스택 설명은 '실행 컨텍스트 정리' 포스팅 글에서 확인 가능합니다.
# 참고문서 및 영상
'Dev study 정리' 카테고리의 다른 글
[Web] Server-Side Rendering(SSR) / Client-Side Rendering(CSR) (1) | 2020.08.19 |
---|---|
[Web & HTTP] CORS / SOP 학습 (2) | 2020.07.01 |
호이스팅(Hoisting) 정리 (0) | 2019.03.03 |
실행 컨텍스트 (Execution context) 정리 (0) | 2019.03.03 |
일급 객체 (First-class citizen) (1) | 2018.11.06 |