nodejs 이벤트 루프 단계: 1. 타이머 단계 2. 대기 중인 콜백 단계 4. 폴링 단계 6. 콜백 단계 종료
이 튜토리얼의 운영 환경: windows7 시스템, nodejs 버전 12.19.0, DELL G3 컴퓨터.
nodejs 이벤트 루프
Node.js가 시작되면 이벤트 루프가 초기화됩니다. 각 이벤트 루프에는 6개의 주기 단계가 포함됩니다. nodejs 시간 루프는 브라우저 이벤트와 완전히 다릅니다.
참고: 그림의 각 상자를 연습 주기의 단계라고 하며, 이 6단계는 이벤트 주기입니다.
단계 요약
-
타이머(타이머): 이 단계는 setTimeout() 및 setInterval()에 의해 예약된 콜백 함수를 실행합니다.
-
보류 중인 콜백(I/O 콜백): 이 단계에서는 close callbacks 및 timers 및 setImmediate()에 의해 예약된 기능을 제외한 거의 모든 콜백 기능이 실행됩니다.
setImmediate는 대략 setTimeout(callback, 0)
-
idle(idle), prepare: 이 단계는 내부적으로만 사용됩니다.
-
poll: 새로운 I/O 이벤트를 검색합니다. 적절한 경우 노드가 이 단계에서 차단됩니다.
-
check(체크): setImmediate()에 의해 설정된 콜백이 이 단계에서 호출됩니다.
-
close 콜백: 이 단계에서는 소켓.on('close',…)과 같은 콜백이 호출됩니다.
각 이벤트 루프 실행 사이에 Node.js는 비동기 I/O 또는 타이머를 기다리고 있는지 확인하고 그렇지 않으면 자동으로 종료됩니다.
이벤트 루프가 폴링 단계에 들어가고 코드가 타이머를 설정하지 않으면 다음과 같은 일이 발생합니다.
- 폴링 대기열이 비어 있지 않으면 이벤트 루프는 대기열이 비어 있을 때까지 대기열에서 콜백을 동기적으로 실행합니다. 비어 있거나 실행된 콜백이 시스템 상한에 도달합니다.
- 폴 큐가 비어 있으면 다음과 같은 일이 발생합니다.
- 코드가 setImmediate()에 의해 콜백으로 설정된 경우 이벤트 루프가 폴 단계로 이어집니다. 확인 단계로 들어가서 확인 단계 대기열을 실행합니다(확인 단계의 대기열은 setImmediate에 의해 설정됨).
- 코드가 setImmediate(콜백)을 설정하지 않으면 이벤트 루프는 이 단계에서 차단되고 콜백이 폴 큐에 합류할 때까지 기다린 후 콜백이 도착하면 즉시 실행됩니다.
이벤트 루프가 폴 단계에 들어가고 코드가 타이머를 설정하는 경우:
- 폴 큐가 빈 상태(즉, 폴 단계가 유휴 상태)에 들어가면 이벤트 루프는 타이머를 확인합니다. 타이머 시간이 도달하면 이벤트 루프는 루프 시퀀스의 타이머 단계에 들어가고 타이머 큐를 실행합니다.
【추천 학습: "nodejs tutorial"】
위 내용은 nodejs 이벤트 루프의 단계는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!