Web Workers 可以使用的函数和类
除了标准的 JavaScript 函数集(例如 String
、Array
、Object
、JSON
等)DOM 中的许多函数都可在 worker 中使用。本文列出了这些函数。
Worker 上下文和函数
Worker 在另一个全局上下文中运行,与当前的 window 不同!Window
并不直接在 worker 中可用,其中的很多方法都通过共享的混入(WindowOrWorkerGlobalScope
)定义,并通过 worker 派生的 WorkerGlobalScope
上下文提供这些方法:
DedicatedWorkerGlobalScope
——专用 workerSharedWorkerGlobalScope
(en-US)——共享 workerServiceWorkerGlobalScope
——service worker
一些函数在所有的 worker 和主线程中均可用(来自 WindowOrWorkerGlobalScope
):atob()
、btoa()
、clearInterval()
、clearTimeout()
、dump()
非标准
、setInterval()
、setTimeout()
。
以下函数仅在 worker 中可用:
WorkerGlobalScope.importScripts()
(所有的 worker)DedicatedWorkerGlobalScope.postMessage
(en-US)(仅专用 worker)
Worker 中可用的 Web API
备注: 下面列出的 API 若仅被某一平台的特定版本支持,也假设其在 web worker 中可用。
以下 Web API 在 worker 中可用:Broadcast Channel API
、Cache API
、Channel Messaging API
、Console API
、Crypto
、CustomEvent
、Data Store
(仅 Firefox)、DOMRequest
和 DOMCursor
、Fetch
、FileReader
、FileReaderSync
(仅在 worker 中可用)、FormData
、ImageData
、IndexedDB
、Network Information API、Notifications
、Performance
、PerformanceEntry
、PerformanceMeasure
(en-US)、PerformanceMark
(en-US)、PerformanceObserver
、PerformanceResourceTiming
、Promise
、Server-sent 事件、ServiceWorkerRegistration
、TextEncoder
和 TextDecoder
、URL
、WebGL 中的 OffscreenCanvas
(通过特性首选项 gfx.offscreencanvas.enabled
启用)、WebSocket
、XMLHttpRequest
(尽管 responseXML
和 channel
属性始终为 null)。
worker 也可以创建其他的 worker,所以以下的 API 也同样可用:Worker
、WorkerGlobalScope
、WorkerLocation
(en-US)、WorkerNavigator
(en-US)。