V8:如何正确处理微任务?

时间:2019-01-27 21:39:24

标签: node.js v8

在扩展V8时,我/我们必须如何参与以确保正确管理微任务?通常,V8在代码本身之外几乎没有文档,但是我发现微任务上绝对没有任何东西。具体来说,我想了解MicrotasksScope及其实现方式。

1 个答案:

答案 0 :(得分:0)

您通常不需要使用MicrotasksScope。

通常,您将使用MicrotasksPolicy::kExplicitMicrotasksPolicy::kAuto

使用kAuto策略,每当清空脚本评估堆栈时,都会运行微任务。使用kExplicit,您必须自己使用Isolate::RunMicrotasks进行操作。

在大多数情况下,默认设置(kAuto)将起作用。如果您是铬或节点,那么使用kExplicit会更有意义,因为您需要与其他所有平台对象(如计时器和网络)一起为微任务队列计时。

对于MicrotasksScope,我个人不知道有任何项目使用它,但是它的行为与kAuto相同,除了在MicrotasksScope对象堆栈(而不是脚本)为空时运行微任务。