nextTickQueue
*process.nextTick()의 콜백을 관리 한다.
*process.nextTick() : 이벤트 루프의 현재 실행 중인 작업을 마친 후, 다음 이벤트 루프 반복 전에 주어진 콜백을 실행하도록 예약하는 메서드이다.
microTaskQueue
Resolve된 프라미스 콜백을 가지고 있다.
Node v11.0.0을 기준으로 다르게 작동한다.
11 이전
이전에는 한 페이즈에서 다음 페이즈로 넘어가기 전에 nextTickQueue와 microTaskQueue를 검사했다. 즉, 매 *틱마다 검사했다.
*틱: 현재 페이즈에서 다음 페이즈로 넘어가는 것이다.
11 이후
현재 실행하고 있는 작업이 끝나면 즉시 실행하도록 변경되었다.
실행 순서가 바뀌게 된 이유는 바로 브라우저와의 일관성 때문이다. 브라우저는 11 이후에 순서와 같다.
공식 문서에서 setImmediate와 process.nextTick의 차이에 주목하고 있다. 정리하면 아래와 같다.
- process.nextTick은 같은 페이즈에서 호출한 즉시 실행된다.
- setImmediate는 다음 틱에서 실행된다. 정확히는 Node.js가 틱을 거쳐 Check Phase에 진입하면 실행된다.
따라서 서로 반대가 되어야 하지만 이미 많은 모듈이 위에 설정을 따르고 있어서 바꾸지 못하고 있다.
'오늘 뭐했냐 > 개발에 대한 주저리' 카테고리의 다른 글
23.10.18 CommonJS와 ES6 (0) | 2023.10.18 |
---|---|
23.10.14 프로토타입 (0) | 2023.10.16 |
23.10.12 이벤트 루프 (0) | 2023.10.15 |
23.10.11 Node.js에서 비동기 처리 (0) | 2023.10.15 |
23.10.10 ci/cd 다시 정리 (0) | 2023.10.14 |