- Worker 接口是 Web Workers API 的一部分,指的是一种可由脚本创建的后台任务,任务执行中可以向其创建者收发信息。要创建一个 Worker **,**只须调用 Worker(URL) 构造函数,函数参数 URL 为指定的脚本。
- Worker duix 也可以创建新的 Worker,当然,所有 Worker 必须与其创建者同源(注意:Blink暂时不支持嵌套 Worker)。
构造函数 |
说明 |
Worker() |
创建一个专用 Web worker,它只执行 URL 指定的脚本。使用 Blob URL 作为参数亦可 |
- Worker 对象有以下方法:
方法 |
说明 |
postMessage() |
发送一条消息到最近的外层对象,消息可由任何 JavaScript 对象组成 |
terminate() |
立即终止 worker。该方法不会给 worker 留下任何完成操作的机会;就是简单的立即停止。Service Woker 不支持这个方法 |
- Worker 对象有以下事件句柄:
方法 |
说明 |
AbstractWorker.onerror |
当ErrorEvent 类型的事件冒泡到 worker 时,事件监听函数 EventListener 被调用。它继承于 AbstractWorker |
Worker.onmessage |
当MessageEvent类型的事件冒泡到 worker 时,事件监听函数 EventListener 被调用. 例如,一个消息通过 DedicatedWorkerGlobalScope.postMessage (en-US),从执行者发送到父页面对象,消息保存在事件对象的 data (en-US) 属性中。 |
Worker.onmessageerror |
当messageerror 类型的事件发生时,对应的event handler 代码被调用 |
注
- 需要注意的是,不是所有函数和构造函数 (或者说…类) 都可以在 Worker 中使用。具体参考页面 Worker 所支持的函数和类。Worker 可以使用 XMLHttpRequest 发送请求,但是请求的 responseXML 与 channel 两个属性值始终返回 null (fetch 仍可正常使用,没有类似的限制)。
来自 <https://developer.mozilla.org/zh-CN/docs/Web/API/Worker>