在扩展V8时,我/我们必须如何参与以确保正确管理微任务?通常,V8在代码本身之外几乎没有文档,但是我发现微任务上绝对没有任何东西。具体来说,我想了解MicrotasksScope及其实现方式。
答案 0 :(得分:0)
您通常不需要使用MicrotasksScope。
通常,您将使用MicrotasksPolicy::kExplicit
或MicrotasksPolicy::kAuto
。
使用kAuto策略,每当清空脚本评估堆栈时,都会运行微任务。使用kExplicit,您必须自己使用Isolate::RunMicrotasks
进行操作。
在大多数情况下,默认设置(kAuto
)将起作用。如果您是铬或节点,那么使用kExplicit会更有意义,因为您需要与其他所有平台对象(如计时器和网络)一起为微任务队列计时。
对于MicrotasksScope,我个人不知道有任何项目使用它,但是它的行为与kAuto相同,除了在MicrotasksScope对象堆栈(而不是脚本)为空时运行微任务。