根据我理解的 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 的回调?
相关分类