根据 Web Worker MDN 文档(https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Functions_and_classes_available_to_workers),Promise 不在可用列表中。 但是当我尝试在工作文件中调试并控制台记录 self 对象时,它里面有 Promise。 承诺截图
我尝试在 Web Worker 中运行
new Promise()
,并且它有效。我很困惑为什么我可以在 Web Worker 中调用 Promise
您引用的文章(Web Workers 可用的函数和类)首先定义了其范围:
... DOM 为工作人员提供了多种功能。本文提供了其中的列表。
换句话说,它涵盖了 Web API 可供 Web Workers 使用的功能。
Promise
不是 Web API 的一部分,而是 ECMAScript 语言规范的一部分。
虽然工作人员在另一个全局上下文中运行,但 ECMAScript 语言规范(自 ES 2015 起)要求全局上下文定义
Promise
。
在相关文章使用 Web Workers 中,Mozilla 贡献者写道:
worker 上下文由一个
对象表示...DedicatedWorkerGlobalScope
关于 DedicatedWorkerGlobalScope 的链接文章有:
JavaScript 参考中列出了一些额外的全局函数、命名空间对象和构造函数,它们通常不与工作全局范围关联,但在其上可用。
链接的 JavaScript Reference 文章最终列出了所有内置组件,包括
Promise
。