- V8에는 Event loop가 없다.
- nodeJs나 브라우져에서 관리한다.
- Event Loop는 여러개의 Queue로 이루어져있다.
- Timer (setTimeOut, setInterval )
- I/O callback
- idle ( 매 Tick 마다 실행 )
- poll ( 새로운 커넥션, 데이터 등)
- check ( setImmediate )
- close ( socket)
setTimeout(() => {
console.log('setTimeout')
}, 0);
setImmediate(() =>{
console.log('setImmediate')
})
setTimeout(() => {
console.log('setTimeout')
}, 0);
// 1번
// setTimeout
// setImmediate
// setTimeout
// 2번
// setImmediate
// setTimeout
// setTimeout
1번과 2번 어떤 것이 맞을 거 같은가???
- EventLoop가i/O callback Queeue 전에 있으면 setTimeout이 먼저 실행되고, i/O callback Queeue 을 막 지난 상태면, Check Queue가 실행되기에 setImmediate가 먼저 실행된다.
{% embed url="https://sjh836.tistory.com/149" %}
{% embed url="https://psyhm.tistory.com/9" %}
https://evan-moon.github.io/2019/08/01/nodejs-event-loop-workflow/