Worker
注意:此功能在Web Workers中可用,除了Service Workers。
Worker
接口是 Web Workers API 的一部分,它代表一个可以通过脚本创建的后台任务,该任务可以向其创建者发送消息。
创建工作线程是通过调用 Worker("path/to/worker/script")
构造函数完成的。
只要这些工作线程与父页面位于相同的来源,工作线程本身就可以生成新的工作线程。
请注意,并非所有接口和函数都可用于 Web 工作线程。有关详细信息,请参阅工作线程可用的函数和类。
构造函数
实例属性
继承自其父级 EventTarget
的属性。
实例方法
继承自其父级 EventTarget
的方法。
Worker.postMessage()
-
向工作线程的内部作用域发送消息(包含任何 JavaScript 对象)。
Worker.terminate()
-
立即终止工作线程。这不会让工作线程完成其操作;它会立即停止。
ServiceWorker
实例不支持此方法。
事件
示例
以下代码片段使用 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
事件。
另请参阅
- 使用 Web Workers
- 工作线程可用的函数和类
- 其他类型的 Worker:
SharedWorker
和 Service Worker。 OffscreenCanvas
接口