我很困惑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应该如何被人们理解。
来源:
- setImmediate vs. nextTick - 为什么setImmediate比nextTick慢得多? - setImmediate并不总是非常立即
1 4 2 3 5 6
。 - Deniz Ozger