在 The Node.js Event Loop, Timers, and process.nextTick() 文章中介绍了 event loop
的概念和其分别的几个阶段(phase)
close callbacks
check
poll
idle,prepare
pending callbacks
timers
结合文章中给出的示意图
我理解的执行顺序是:
1 -> 2 -> 3 -> 4 -> 5 -> 6
但是在随后文中的描述
似乎表达的相反的执行顺序:
6 -> 5 -> 4 -> 3 -> 2-> 1
但是因为在同一个 i/o cycle 中
// timeout_vs_immediate.js
const fs = require('fs');
fs.readFile(__filename, () => {
setTimeout(() => {
console.log('timeout');
}, 0);
setImmediate(() => {
console.log('immediate');
});
});
// immediate 总是在 timeout 前面完成
$ node timeout_vs_immediate.js
immediate
timeout
$ node timeout_vs_immediate.js
immediate
timeout
那么到底这些阶段有没有优先级顺序?如果有?何种为正确的?文档中描述和图示是否有冲突?(就是我对于英语
的理解是否存在问题?)
侃侃无极
相关分类