我已阅读官方文档和许多其他博客,process.nextTick()但我对某些主题有点困惑。
首先,写入中的回调process.nextTick()在下一次迭代开始之前执行。
其次,当在 I/O 周期内时,事件循环当前处于轮询阶段。在轮询阶段之后,事件循环进入检查阶段,在该阶段执行setImmediate方法中调用的任何回调。
现在在下面的代码中
const fs = require('fs');
function main() {
fs.readFile('./xy.txt', function(err, buff){
setTimeout(()=> console.log("timeout inside fs"),0);
setImmediate(()=> console.log("immediate inside fs"));
process.nextTick(()=>{console.log("process.nextTick")});
console.log("inside fs");
})
console.log("called inside main fn in first-iteration");
}
main();
console.log("called in first-iteration);
Run Code Online (Sandbox Code Playgroud)
输出将是:
const fs = require('fs');
function main() {
fs.readFile('./xy.txt', function(err, buff){
setTimeout(()=> console.log("timeout inside fs"),0);
setImmediate(()=> console.log("immediate inside fs"));
process.nextTick(()=>{console.log("process.nextTick")});
console.log("inside fs");
})
console.log("called inside main fn in first-iteration");
}
main();
console.log("called in first-iteration);
Run Code Online (Sandbox Code Playgroud)
在此期间, …