【发布时间】:2013-07-04 09:17:23
【问题描述】:
我对 nextTick 和 setImmediate 之间的区别感到非常困惑。我已经阅读了互联网上所有关于它们的文档,但我仍然不明白它们是如何工作的。
例子:
function log(n) { console.log(n); }
setImmediate
setImmediate(function() {
setImmediate(function() {
log(1);
setImmediate(function() { log(2); });
setImmediate(function() { log(3); });
});
setImmediate(function() {
log(4);
setImmediate(function() { log(5); });
setImmediate(function() { log(6); });
});
});
//1 2 3 4 5 6
nextTick
process.nextTick(function() {
process.nextTick(function() {
log(1);
process.nextTick(function() { log(2); });
process.nextTick(function() { log(3); });
});
process.nextTick(function() {
log(4);
process.nextTick(function() { log(5); });
process.nextTick(function() { log(6); });
});
});
//1 4 2 3 5 6
为什么会出现这些结果?请用视觉或非常容易理解的解释来解释。即使是节点核心开发人员也不同意人们应该如何理解 nextTick 和 setImmediate。
来源:
【问题讨论】:
-
好问题。这是说明差异的绝佳方式。
-
两次执行的输出相同 (
1 4 2 3 5 6) (Node v5.6.0) -
明智而有帮助的问题!
-
两者产生相同的输出
-
看看那一年,5年前!很多事情本可以改变。
标签: node.js