일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Hermes Engine
- Google 애널리틱스
- 테이블 해시 함수
- nextjs-performance
- 중첩 점
- 최솟갑 구하기
- 프로그래머스
- create-next-app
- nextjs
- 테스트 Date
- 귤 고르기
- jest
- 호텔 대실
- 연결 요소 제거하기
- ResizeObserver
- 과제 진행하기
- 날짜 테스트
- 헤르메스 엔진
- 리액트네이티브 엔진
- mutationobserver
- Leetcode #javascript #알고리즘 #Algorithms #js
- 자바스크립트
- Jest uuid syntax
- JavaScript
- 구름톤챌린지
- 구름톤
- 리액트네이티브
- mock date
- 통신망분석
- 구름톤 챌린지
- Today
- Total
나만보는개발공부블로그
Event loop - 2 본문
Node.js가 시작되면 event loop를 초기화하고 입력값들을 처리하여 비동기 API를 수행하거나 타이머를 예약하고 process.nextTick()을 호출한다.
Event loop의 작업 순서는 다음의 그림과 같다.
각 stage들은 실행할 콜백의 FIFO구조의 Queue를 가지고 있다. 이벤트루프가 각 stage에 들어가게 될때 해당 stage의 명시된 작업을 수행하고 Queue가 비어지거나 최대 제한 콜백 갯수까지 도달할때까지 해당 stage에서 콜백을 실행한다. 그래서 콜백 제한이나 큐가 비어지는 시점에 이벤트 루프는 다음 단계로 이동하게 되고 이러한 과정이 반복된다.
또한 각 작업들은 더 많은 작업들을 스케줄링 하거나 poll stage에서 처리되는 새로운 이벤트가 커널에 의해 큐에 추가될 수 있으므로 polling event를 처리되는동안 poll event를 queue에 추가할 수 있다. 그 결과로 오래 실행되는 콜백은 poll stage가 timer의 한계 시점보다 훨 씬 더 오래 실행되도록 할 수 있다.
- timer : setTimeout()과 setInterval()로 스케줄링한 콜백을 실행
- pending callbacks : 다음 루프 반복으로 연기된 I/O 콜백들을 실행
- idle, prepare: 내부적으로만 사용됨
- poll : 새로운 이벤트를 가져온다. I/O와 연관된 콜백을 실행한다.
- check : setImmediate()콜백을 호출
- close callback : 일부 close 콜백들을 호출 ex) socket.close()
'Javascript&Typescript' 카테고리의 다른 글
Declarative and Imperative programming (0) | 2021.02.21 |
---|---|
Closure (0) | 2021.02.19 |
Event loop - 1 (0) | 2021.02.16 |
Functional Programming (0) | 2021.02.11 |
[JS] for & forEach & map (0) | 2021.02.06 |