Skip to content

Latest commit

 

History

History
60 lines (35 loc) · 1.23 KB

undefined.md

File metadata and controls

60 lines (35 loc) · 1.23 KB

내부 동작 원리

  1. V8에는 Event loop가 없다.
    1. nodeJs나 브라우져에서 관리한다.
  2. Event Loop는 여러개의 Queue로 이루어져있다.
    1. Timer (setTimeOut, setInterval )
    2. I/O callback
    3. idle ( 매 Tick 마다 실행 )
    4. poll ( 새로운 커넥션, 데이터 등)
    5. check ( setImmediate )
    6. 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의 타이밍에 맞게 출력된다.

  • 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/