Web Workers 可以使用的函数和类
除了标准的 JavaScript 函数集(例如 String
、Array
、Object
、JSON
等)DOM 中的许多函数都可在 worker 中使用。本文列出了这些函数。
Worker 上下文和函数
Worker 在另一个全局上下文中运行,与当前的 window 不同!Window
并不直接在 worker 中可用,其中的很多方法都通过共享的混入(WindowOrWorkerGlobalScope
)定义,并通过 worker 派生的 WorkerGlobalScope
上下文提供这些方法:
DedicatedWorkerGlobalScope
用于专用 workerSharedWorkerGlobalScope
用于共享 workerServiceWorkerGlobalScope
用于 service worker
一些函数在所有的 worker 和主线程中均可用(来自 WindowOrWorkerGlobalScope
):
WorkerGlobalScope.atob()
WorkerGlobalScope.btoa()
WorkerGlobalScope.clearInterval()
WorkerGlobalScope.clearTimeout()
WorkerGlobalScope.createImageBitmap()
WorkerGlobalScope.dump()
非标准WorkerGlobalScope.fetch()
WorkerGlobalScope.queueMicrotask()
WorkerGlobalScope.reportError()
WorkerGlobalScope.setInterval()
WorkerGlobalScope.setTimeout()
WorkerGlobalScope.structuredClone()
DedicatedWorkerGlobalScope.requestAnimationFrame()
(仅专用 worker)DedicatedWorkerGlobalScope.cancelAnimationFrame()
(仅专用 worker)
以下函数仅在 worker 中可用:
WorkerGlobalScope.importScripts()
(所有的 worker)DedicatedWorkerGlobalScope.postMessage()
(仅专用 worker)
Worker 中可用的 Web API
备注:如果列出的 API 被某一平台的特定版本所支持,那么一般可以认为它在 web worker 中是可用的。你也可以使用网站来测试对某个特定对象/函数的支持:https://worker-playground.glitch.me/
以下 Web API 在 worker 中可用:
Barcode Detection API
Broadcast Channel API
Cache API
Channel Messaging API
Console API
- Web Crypto API(例如
Crypto
) - CSS Font Loading API
CustomEvent
Encoding API
(例如TextEncoder
、TextDecoder
)Fetch API
FileReader
FileReaderSync
(仅在 worker 中有效!)FormData
ImageBitmap
ImageData
IndexedDB
- Media Source Extensions API(仅限专用 worker)
- Network Information API
Notifications API
OffscreenCanvas
(和所有的 canvas context API)Performance API
,包括:- Server-sent 事件
ServiceWorkerRegistration
URL API
(例如URL
)- WebCodecs_API
WebSocket
XMLHttpRequest
worker 也可以派生其他 worker,所以这些 API 也是可用的: