我刚刚读完了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规范,我知道理论上我应该能够自己提取差异.但我确信其他人也可以从专家的简短解释中受益.
根据这个答案:
“重要的是要考虑到 Promise 中的 then/catch 回调是微任务,并将在 nextTick 任务之后执行”
Nodejs 文档提到 nextTickQueue 将在当前操作完成后处理,无论事件循环的当前阶段如何。这是否意味着已解决的承诺回调既不会在轮询阶段执行,也不会在挂起的回调阶段执行?
此外,该视频提到有一个queueMicroTask 队列,该队列在事件循环的当前阶段之后进行处理。所以我现在明白的是:
已解决的 Promise 回调将添加到queueMicroTask中,该回调将在nextTickQueue(回调传递给process.nextTick)之后进行处理,无论事件循环的当前阶段是什么,都会在nextTickQueue之后进行处理。
那是对的吗?如果不对请纠正我,我真的很困惑。