Worker

Baseline 廣泛可用 *

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

* 此特性的某些部分可能存在不同級別的支援。

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

Worker 介面是 Web Workers API 的一部分,代表一個可以透過指令碼建立的後臺任務,該任務可以向其建立者傳送訊息。

透過呼叫 Worker("path/to/worker/script") 建構函式來建立 worker。

Worker 本身也可以建立新的 Worker,前提是這些新的 Worker 必須與父頁面具有相同的 源 (origin)

請注意,並非所有介面和函式都可供 Web Worker 使用。有關詳細資訊,請參閱 Web Worker 可用的函式和類

EventTarget Worker

建構函式

Worker()

建立一個專用的 Web Worker,用於執行指定 URL 的指令碼。此方法也適用於 Blob URL

例項屬性

繼承其父級 EventTarget 的屬性。

例項方法

繼承其父級 EventTarget 的方法。

Worker.postMessage()

向 worker 的內部作用域傳送一條訊息 — 該訊息可以包含任何 JavaScript 物件。

Worker.terminate()

立即終止 Worker。這不會讓 Worker 完成其操作;它會被立即停止。ServiceWorker 例項不支援此方法。

事件

error

在 Worker 中發生錯誤時觸發。

message

當 Worker 的父級收到來自該 Worker 的訊息時觸發。

messageerror

Worker 物件收到一條無法 反序列化 的訊息時觸發。

示例

以下程式碼片段使用 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");
};

如需完整示例,請參閱我們的 基本專用 Worker 示例執行專用 Worker)。

規範

規範
HTML
# 專用的 Worker 和 Worker 介面

瀏覽器相容性

不同型別的 Worker 支援程度各不相同。具體細節請參閱每個 Worker 型別的頁面。

跨域 Worker 的錯誤行為

在規範的早期版本中,載入跨域 Worker 指令碼會丟擲 SecurityError。如今,而是丟擲一個 error 事件。

另見