我爱编程

2018-06-08 Event Loop

2018-06-08  本文已影响0人  彭奕泽

1. node.js初始化

初始化event loop -> 执行server.js文件 -> 进入event loop

2. eventLoop循环过程

eventLoop.png

3. poll阶段

poll.png

4. check阶段

大部分情况都是先执行check阶段的setImmediate(),再执行timer阶段的setTimeout(),因为poll之后就是check,只有在第一次启动的时候!才可能会先执行timer。
因为setTimeout()的最短时间是4ms(即使你设置0),而node.js的初始化过程是
初始化eventLoop -> 执行server
.js -> 进入eventLoop,在执行server.js到进入eventLoop这段时间若大于4ms则会先执行timer,若没到4ms的话,就不会先执行timer的setTimeout(),

5. nextTick()

setTimeout(()=>{
  console.log('1')
})
setImmediate(()=>{
  console.log('2')
})
process.nextTick(()=>{
  console.log('3')
})

会先执行3,在进入eventLoop之前,和eventLoop里进入每一个阶段之前都会先调用一次nextTick()

6. 宏任务和微任务

上一篇 下一篇

猜你喜欢

热点阅读