我刚刚读完了Promises/A +规范并偶然发现了微任务和macrotask这两个术语:请参阅http://promisesaplus.com/#notes
我以前从未听说过这些术语,现在我很好奇它的区别是什么?
我已经尝试在网上找到一些信息,但我发现的所有内容都来自w3.org档案馆(这并不能解释我与众不同之处):http://lists.w3.org/Archives /Public/public-nextweb/2013Jul/0018.html
另外,我发现了一个名为"macrotask"的npm模块:https://www.npmjs.org/package/macrotask 同样,没有明确区别的是什么.
我所知道的是,它与事件循环有关,如https://html.spec.whatwg.org/multipage/webappapis.html#task-queue 和https://html.spec.whatwg中所述. .ORG /多页/ webappapis.html#执行-A-microtask检查点
根据WHATWG规范,我知道理论上我应该能够自己提取差异.但我确信其他人也可以从专家的简短解释中受益.
我在节点文档中读到了这个:
setImmediate(callback,[arg],[...])
在I/O事件回调之后以及之前
setTimeout和之后安排"立即"执行回调setInterval
但是,我看到相反的情况.
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");
Run Code Online (Sandbox Code Playgroud)
输出:
0 directCall
1 nextTick
2 setTimeout
3 setImmediate
Run Code Online (Sandbox Code Playgroud)