setTimeout和setImmediate之间的优先级

我在节点文档中读到这个:

setImmediate(callback,[arg],[…])

在I / O事件callback之后和setTimeoutsetInterval 之前安排callback的“立即”执行

但是,我看到了相反的情况。 setTimeoutsetImmediate之前执行。 是否有人对此行为或节点事件循环上的任何文档进行了补充?

谢谢 :)

代码:

 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中的作用稍微不那么确定)。