执行流程
image.png本轮循环结束后执行
process.nextTick
Promise 微任务队列
下轮循环执行
setTimeout、setInterval、setImmediate 宏任务队列
// 一般先输出1,后输出2,但不全是
// 参考流程图,先timers,后check Handlers
setTimeout(() => console.log(1));
setImmediate(() => console.log(2));
const fs = require('fs');
// 肯定先输出2,后输出1
// 参考流程,文件读取先I/O callbacks,poll阶段执行2个回调,
// 接下来是check handlers,下次循环开始执行timers
fs.readFile('test.js', () => {
setTimeout(() => console.log(1));
setImmediate(() => console.log(2));
});
网友评论