setTimeout和setImmediate之间的优先级
我在节点文档中读到这个:
setImmediate(callback,[arg],[…])
在I / O事件callback之后和
setTimeout
和setInterval
之前安排callback的“立即”执行
但是,我看到了相反的情况。 setTimeout
在setImmediate
之前执行。 是否有人对此行为或节点事件循环上的任何文档进行了补充?
谢谢 :)
代码:
var index = 0; function test(name) { console.log((index++) + " " + name); } setImmediate(function() { test("setImmediate"); }) setTimeout(function() { test("setTimeout"); }, 0); process.nextTick(function() { test("nextTick"); }) test("directCall");
输出:
0 directCall 1 nextTick 2 setTimeout 3 setImmediate
你应该检查这个github问题
事件循环周期是定时器 – > I / O – >立即数,冲洗并重复。 文档是正确的,但是不完整:它没有提到,当你还没有进入事件循环(就像在你的例子中那样),那么定时器会先到达 – 但只在第一个时间点。 (在主人面前,使问题变得复杂的是,事情在v0.10中的作用稍微不那么确定)。