Worker: Worker() 建構函式
Baseline 廣泛可用 *
注意:此功能在 Web Workers 中可用,但 Service Workers 除外。
Worker() 建構函式建立一個 Worker 物件,該物件執行指定 URL 的指令碼。該指令碼必須遵守 同源策略。
注意: 瀏覽器廠商之間對於 data URL 是否屬於同源存在分歧。雖然 Firefox 10 及更高版本接受 data URL,但並非所有其他瀏覽器都這樣做。
語法
new Worker(url)
new Worker(url, options)
引數
url-
一個字串,表示 worker 將執行的指令碼的 URL。它必須遵守同源策略。URL 相對於當前 HTML 頁面的位置進行解析。
注意: 包括 webpack、Vite 和 Parcel 在內的打包工具建議將相對於
import.meta.url的 URL 傳遞給Worker()建構函式。例如:jsconst myWorker = new Worker(new URL("worker.js", import.meta.url));這樣,路徑就相對於當前指令碼而不是當前 HTML 頁面,這允許打包工具安全地執行重新命名等最佳化(因為否則
worker.jsURL 可能指向一個不受打包工具控制的檔案,因此它無法做出任何假設)。 options可選-
一個物件,包含建立物件例項時可設定的選項屬性。可用屬性如下:
type-
一個字串,指定要建立的 worker 的型別。該值可以是
classic或module。如果未指定,則預設為classic。 credentials-
一個字串,指定 worker 使用的憑證型別。該值可以是
omit、same-origin或include。如果未指定,或者 type 是classic,則預設為same-origin(僅包含同源請求的憑證)。 name-
一個字串,指定代表 worker 作用域的
DedicatedWorkerGlobalScope的標識名稱,這對於除錯目的非常有用。
異常
SecurityErrorDOMException-
如果文件不允許啟動 worker,則會丟擲此錯誤,例如,如果 URL 語法無效或違反了同源策略。
NetworkErrorDOMException-
如果 worker 指令碼的 MIME 型別不正確,則會丟擲此錯誤。它應該始終為
text/javascript(出於歷史原因,其他 JavaScript MIME 型別也可能被接受)。 SyntaxErrorDOMException-
如果 aURL 無法解析,則會丟擲此錯誤。
示例
以下程式碼段展示了使用 Worker() 建構函式建立 Worker 物件及其後續用法:
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 介面。