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 APIBroadcast Channel APICache APIChannel Messaging APIConsole API- Web Crypto API(例如
Crypto) - CSS Font Loading API
CustomEventEncoding API(例如TextEncoder、TextDecoder)Fetch APIFileReaderFileReaderSync(仅在 worker 中有效!)FormDataImageBitmapImageDataIndexedDB- Media Source Extensions API(仅限专用 worker)
- Network Information API
Notifications APIOffscreenCanvas(和所有的 canvas context API)Performance API,包括:- Server-sent 事件
ServiceWorkerRegistrationURL API(例如URL)- WebCodecs_API
WebSocketXMLHttpRequest
worker 也可以派生其他 worker,所以这些 API 也是可用的: