WorkerGlobalScope
Baseline 廣泛可用 *
注意:此功能僅在 Web Workers 中可用。
WorkerGlobalScope 介面是 Web Workers API 的一部分,代表任何 worker 的作用域。Worker 沒有瀏覽上下文;這個作用域包含通常由 Window 物件傳達的資訊 — 在這種情況下,包括事件處理器、控制檯或關聯的 WorkerNavigator 物件。每個 WorkerGlobalScope 都有自己的事件迴圈。
此介面通常由每種 worker 型別進行專門化:DedicatedWorkerGlobalScope 用於專用 worker,SharedWorkerGlobalScope 用於共享 worker,ServiceWorkerGlobalScope 用於 ServiceWorker。self 屬性返回每個上下文的專用作用域。
例項屬性
此介面繼承自 EventTarget 介面的屬性。
WorkerGlobalScope.caches只讀 安全上下文-
返回與當前上下文關聯的
CacheStorage物件。該物件啟用離線使用資產儲存、生成自定義請求響應等功能。 WorkerGlobalScope.crossOriginIsolated只讀-
返回一個布林值,指示網站是否處於跨源隔離狀態。
WorkerGlobalScope.crypto只讀-
返回與全域性物件關聯的
Crypto物件。 WorkerGlobalScope.fonts只讀-
返回與 worker 關聯的
FontFaceSet。 WorkerGlobalScope.indexedDB只讀-
提供了一種機制,供 worker 非同步訪問索引資料庫的功能;返回一個
IDBFactory物件。 WorkerGlobalScope.isSecureContext只讀-
返回一個布林值,指示當前上下文是否安全(
true)或不安全(false)。 WorkerGlobalScope.location只讀-
返回與 worker 關聯的
WorkerLocation。它是一個特定的位置物件,大部分是瀏覽作用域的Location的子集,但適用於 worker。 -
返回與 worker 關聯的
WorkerNavigator。它是一個特定的 navigator 物件,大部分是瀏覽作用域的Navigator的子集,但適用於 worker。 WorkerGlobalScope.origin只讀-
返回全域性物件的 origin(源),並將其序列化為字串。
WorkerGlobalScope.performance只讀-
返回與 worker 關聯的
Performance物件。只有Performance介面的屬性和方法的一部分可供 worker 使用。 WorkerGlobalScope.scheduler只讀-
返回與當前上下文關聯的
Scheduler物件。這是使用 Prioritized Task Scheduling API 的入口點。 WorkerGlobalScope.trustedTypes只讀-
返回與全域性物件關聯的
TrustedTypePolicyFactory物件,這是使用 Trusted Types API 的入口點。 WorkerGlobalScope.self只讀-
返回對
WorkerGlobalScope本身的引用。大多數情況下,它是一個特定作用域,例如DedicatedWorkerGlobalScope、SharedWorkerGlobalScope或ServiceWorkerGlobalScope。
例項方法
此介面繼承自 EventTarget 介面的方法。
WorkerGlobalScope.atob()-
解碼使用 base-64 編碼的資料字串。
WorkerGlobalScope.btoa()-
從二進位制資料字串建立 base-64 編碼的 ASCII 字串。
WorkerGlobalScope.clearInterval()-
取消使用
WorkerGlobalScope.setInterval()設定的重複執行。 WorkerGlobalScope.clearTimeout()-
取消使用
WorkerGlobalScope.setTimeout()設定的延遲執行。 WorkerGlobalScope.createImageBitmap()-
接受各種不同的影像源,並返回一個
Promise,該 Promise 解析為ImageBitmap。可選地,源會被裁剪到以 (sx, sy) 為起點、寬度為 sw、高度為 sh 的畫素矩形區域。 WorkerGlobalScope.dump()已棄用 非標準-
允許您將訊息寫入 stdout — 即,寫入您的終端。這與 Firefox 的
window.dump相同,但適用於 worker。 WorkerGlobalScope.fetch()-
開始從網路獲取資源的程序。
WorkerGlobalScope.importScripts()-
將一個或多個指令碼匯入到 worker 的作用域中。您可以指定任意數量的指令碼,用逗號分隔。例如:
importScripts('foo.js', 'bar.js');。 WorkerGlobalScope.queueMicrotask()-
排隊等待一個微任務,以便在控制權安全返回到瀏覽器的事件迴圈之前執行。
WorkerGlobalScope.setInterval()-
安排一個函式在每經過給定毫秒數時執行。
WorkerGlobalScope.setTimeout()-
安排一個函式在給定時間內執行。
WorkerGlobalScope.structuredClone()WorkerGlobalScope.reportError()-
報告指令碼中的錯誤,模擬未捕獲的異常。
事件
error-
發生錯誤時觸發。
languagechange-
當用戶的首選語言發生變化時,在全域性/worker 作用域物件上觸發。
offline-
當瀏覽器失去網路訪問許可權且
navigator.onLine的值切換為false時觸發。 online-
當瀏覽器重新獲得網路訪問許可權且
navigator.onLine的值切換為true時觸發。 rejectionhandled-
在已處理的
Promise拒絕事件上觸發。 securitypolicyviolation-
當 內容安全策略 被違反時觸發。
unhandledrejection-
在未處理的
Promise拒絕事件上觸發。
示例
您不會在程式碼中直接訪問 WorkerGlobalScope;然而,它的屬性和方法會被更具體的全域性作用域繼承,例如 DedicatedWorkerGlobalScope 和 SharedWorkerGlobalScope。例如,您可以使用以下兩行程式碼匯入另一個指令碼到 worker 中,並打印出 worker 作用域的 navigator 物件的內容:
importScripts("foo.js");
console.log(navigator);
注意: 由於 worker 指令碼的全域性作用域實際上是您正在執行的 worker 的全域性作用域(DedicatedWorkerGlobalScope 或其他),並且所有 worker 全域性作用域都繼承自 WorkerGlobalScope 的方法、屬性等,因此您可以執行上面的程式碼行,而無需指定父物件。
規範
| 規範 |
|---|
| HTML # the-workerglobalscope-common-interface |
瀏覽器相容性
載入中…
另見
- 其他全域性物件介面:
Window、DedicatedWorkerGlobalScope、SharedWorkerGlobalScope、ServiceWorkerGlobalScope - 其他與 Worker 相關的介面:
Worker、WorkerLocation和WorkerNavigator - 使用 Web Worker