nodeJS 事件循环问题

根据我理解的 nodejs 的事件循环机制,在poll阶段如果poll队列不为空,则会遍历队列并执行回调,当poll队列为空了,再执行下一阶段的setImmediate()的回调。

问题出自一下代码:
`setTimeout(() => {
console.log('0毫秒后执行的定时器回调')
}, 0)

readFile('../package.json', 'utf-8', data => {
console.log('完成文件 1 读操作的回调')
})

setImmediate(() => {
console.log('immediate 立即回调')
})

process.nextTick(() => {
console.log('process.nextTick的回调')
})`

输出结果:
process.nextTick的回调
0毫秒后执行的定时器回调
immediate 立即回调
完成文件 1 读操作的回调

请问为什么是先执行 setImmediate 而不是 readFile 的回调?

阅读 1.6k
2 个回答

setImmediate属于timer阶段

抱歉,搞错了,属于check阶段的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题