Web Workers 可以使用的函数和类
除了标准的 JavaScript 函数集(例如 String
、Array
、Object
、JSON
等)DOM 中的许多函数都可在 worker 中使用。本文列出了这些函数。
Worker 上下文和函数
Worker 在另一个全局上下文中运行,与当前的 window 不同!Window
并不直接在 worker 中可用,其中的很多方法都通过共享的混入(WindowOrWorkerGlobalScope
)定义,并通过 worker 派生的 WorkerGlobalScope
(en-US) 上下文提供这些方法:
DedicatedWorkerGlobalScope
用于专用 workerSharedWorkerGlobalScope
(en-US) 用于共享 workerServiceWorkerGlobalScope
用于 service worker
一些函数在所有的 worker 和主线程中均可用(来自 WindowOrWorkerGlobalScope
):
atob()
btoa()
clearInterval()
clearTimeout()
dump()
非标准queueMicrotask()
setInterval()
setTimeout()
structuredClone()
window.requestAnimationFrame
(仅专用 worker)window.cancelAnimationFrame
(仅专用 worker)
以下函数仅在 worker 中可用:
WorkerGlobalScope.importScripts()
(所有的 worker)DedicatedWorkerGlobalScope.postMessage
(en-US)(仅专用 worker)
Worker 中可用的 Web API
备注: 如果列出的 API 被某一平台的特定版本所支持,那么一般可以认为它在 web worker 中是可用的。你也可以使用网站来测试对某个特定对象/函数的支持:https://worker-playground.glitch.me/
以下 Web API 在 worker 中可用:
Barcode Detection API
(en-US)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
(en-US)URL API
(例如URL
)- WebCodecs_API
WebSocket
XMLHttpRequest
worker 也可以派生其他 worker,所以这些 API 也是可用的: