Worker

注意:此功能在Web Workers中可用,除了Service Workers

Worker 接口是 Web Workers API 的一部分,它代表一个可以通过脚本创建的后台任务,该任务可以向其创建者发送消息。

创建工作线程是通过调用 Worker("path/to/worker/script") 构造函数完成的。

只要这些工作线程与父页面位于相同的来源,工作线程本身就可以生成新的工作线程。

请注意,并非所有接口和函数都可用于 Web 工作线程。有关详细信息,请参阅工作线程可用的函数和类

EventTarget Worker

构造函数

Worker()

创建一个专用的 Web 工作线程,该工作线程执行指定 URL 处的脚本。这也适用于Blob URL

实例属性

继承自其父级 EventTarget 的属性。

实例方法

继承自其父级 EventTarget 的方法。

Worker.postMessage()

向工作线程的内部作用域发送消息(包含任何 JavaScript 对象)。

Worker.terminate()

立即终止工作线程。这不会让工作线程完成其操作;它会立即停止。ServiceWorker 实例不支持此方法。

事件

错误

当工作线程中发生错误时触发。

消息

当工作线程的父级从该工作线程接收消息时触发。

消息错误

Worker 对象接收到无法反序列化的消息时触发。

示例

以下代码片段使用 Worker() 构造函数创建 Worker 对象,然后使用工作线程对象

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

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

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

规范

规范
HTML 标准
# dedicated-workers-and-the-worker-interface

浏览器兼容性

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

不同类型的 Worker 的支持有所不同。有关详细信息,请参阅每个 Worker 类型的页面。

跨源 Worker 错误行为

在早期版本的规范中,加载跨源 Worker 脚本会抛出 SecurityError。现在,改为抛出 error 事件。

另请参阅