Worker: Worker() 建構函式

Baseline 廣泛可用 *

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

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

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

Worker() 建構函式建立一個 Worker 物件,該物件執行指定 URL 的指令碼。該指令碼必須遵守 同源策略

注意: 瀏覽器廠商之間對於 data URL 是否屬於同源存在分歧。雖然 Firefox 10 及更高版本接受 data URL,但並非所有其他瀏覽器都這樣做。

語法

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

引數

url

一個字串,表示 worker 將執行的指令碼的 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

一個字串,指定要建立的 worker 的型別。該值可以是 classicmodule。如果未指定,則預設為 classic

credentials

一個字串,指定 worker 使用的憑證型別。該值可以是 omitsame-origininclude。如果未指定,或者 type 是 classic,則預設為 same-origin(僅包含同源請求的憑證)。

name

一個字串,指定代表 worker 作用域的 DedicatedWorkerGlobalScope 的標識名稱,這對於除錯目的非常有用。

異常

SecurityError DOMException

如果文件不允許啟動 worker,則會丟擲此錯誤,例如,如果 URL 語法無效或違反了同源策略。

NetworkError DOMException

如果 worker 指令碼的 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");
};

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

規範

規範
HTML
# dom-worker-dev

瀏覽器相容性

另見

它所屬的 Worker 介面。