工作线程:Worker() 构造函数

注意:此功能在 Web Workers 中可用,但 Service Workers 除外。

Worker() 构造函数创建一个 Worker 对象,该对象执行指定 URL 处的脚本。此脚本必须遵守 同源策略

注意:浏览器制造商之间存在争议,关于数据 URL 是否是同源的。虽然 Firefox 10 及更高版本接受数据 URL,但这在所有其他浏览器中并不适用。

语法

js
new Worker(url)
new Worker(url, options)

参数

url

表示工作线程将执行的脚本的 URL 的字符串。它必须遵守同源策略。URL 相对于当前 HTML 页面的位置解析。

注意:打包器,包括 WebpackViteParcel,建议将相对于 import.meta.url 的 URL 传递给 Worker() 构造函数。例如

js
const myWorker = new Worker(new URL("worker.js", import.meta.url));

这样,路径相对于当前脚本而不是当前 HTML 页面,这允许打包器安全地进行优化,例如重命名(因为否则 worker.js URL 可能指向一个未由打包器控制的文件,因此它不能做出任何假设)。

options 可选

包含在创建对象实例时可以设置的选项属性的对象。可用的属性如下

type

指定要创建的工作线程类型的字符串。该值可以是 classicmodule。如果未指定,则使用默认值 classic

credentials

指定用于工作线程的凭据类型的字符串。该值可以是 omitsame-origininclude。如果未指定,或者如果 type 是 classic,则使用默认值 same-origin(仅对同源请求包含凭据)。

name

指定表示工作线程范围的 DedicatedWorkerGlobalScope 的标识名称的字符串,这主要用于调试目的。

异常

SecurityError DOMException

如果文档不允许启动工作线程,则抛出此异常,例如,如果 URL 的语法无效或违反了同源策略。

NetworkError DOMException

如果工作线程脚本的 MIME 类型不正确,则抛出此异常。它应该始终为 text/javascript(出于历史原因,其他 JavaScript MIME 类型 可能被接受)。

SyntaxError DOMException

如果aURL无法解析,则抛出此异常。

示例

以下代码片段显示了使用 Worker() 构造函数创建 Worker 对象以及随后对该对象的用法

js
const myWorker = new Worker("worker.js");
const first = document.querySelector("input#number1");

first.onchange = () => {
  myWorker.postMessage(first.value);
  console.log("Message posted to worker");
};

有关完整示例,请参阅我们的 基本专用工作线程示例 (运行专用工作线程)。

规范

规范
HTML 标准
# dom-worker-dev

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅

它所属的 Worker 接口。