[javascript] event loop란 무엇인가
카테고리: JS
태그: JS TIL event loop
1. 이벤트루프
-
javascript의 콜스택
- 자바스크립트는 싱글스레드 기반의 언어 -> 하나의 콜스택을 가짐
- 콜스택은 먼저 main() 함수를 실행하고 작업을 순차적으로 쌓음 -> 맨 위 것만 실행
- 콜스택에 너무 많은 내용이 쌓이면 스택 오버플로우 발생
-
javascript에서의 블로킹
- 동기적으로 실행되는 네트워크 요청이 있다면 콜스택을 블로킹
- 다른 작업이나 랜더링 불가능
-
javascript와 web API
- setTimeout은 V8 소스코드에는 없음
- javascript가 실행되는 런타임 환경에 존재하는 API
- 웬브라우져에서 제공하는 web API가 동시성을 지원
-
이벤트루프
- 스택과 테스크큐를 주시하면서 작업을 처리
- 스택이 비어있고 테스크 큐에 작업이 있다면 스택으로 이동시켜줌
- 따라서 setTimeout 정확한 시간이 아니라 API에서 딜레이 될 시간만 정할 수 있음
-
랜더큐
- javascript는 60분의 1초마다 랜더링을 하나 스택이 깨끗할 때만 랜더링 진행
- 랜더 큐에서 콜스택이 깨끗한지 확인 후 랜더링 진행
- 만약 랜더링이 불가능할 경우 우리가 웹에서 하는 동작이 작동하지 않음
- 스택에 불필요한 동작이 있어 스택을 막아서는 안됨!
댓글 남기기