采取以下从nodejs event loop documentation提取的代码:
// timeout_vs_immediate.js
setTimeout(() => {
console.log('timeout');
}, 0);
setImmediate(() => {
console.log('immediate');
});
根据文档:
为什么上述说法是正确的?是因为nodejs运行时实际上使用了多个线程来挑选必须执行的回调。
我的直觉是什么:有两个线程执行
setTimeout
和setImmediate
的回调,因此当它们均可用时,这会导致竞争状态,因此输出将是不确定的。这是正确的吗 ?还是有其他原因导致不确定性?
最佳答案
本质上,发生两件事:
引用:
https://github.com/nodejs/help/issues/392#issuecomment-305969168
关于javascript - 在主模块中使用setTimeout(0)和setImmediate()时,为什么行为未定义?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45934350/