2018-06-08 Event Loop

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. 宏任务和微任务

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容