setTimeout和setImmediate之间的优先级

时间:2014-04-24 12:39:09

标签: javascript node.js

我在节点documentation上看到了这个:

  

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

     

安排"立即"在I / O事件回调之后执行回调,在setTimeoutsetInterval

之前执行

然而,我看到相反的情况。 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

1 个答案:

答案 0 :(得分:3)

您应该查看github issue

  

事件循环周期是定时器 - > I / O - >立即,冲洗和重复。   文档是正确但不完整的:它没有提到   当你还没有进入事件循环时(就像你的情况一样)   例子),然后计时器先到 - 但只在第一个刻度线上。 (在   主。更复杂的是,事情的确定性稍差   在v0.10。)