Web 工作者 makes it possible to run a script operation in a background thread separate from the main execution thread of a web application. The advantage of this is that laborious processing can be performed in a separate thread, allowing the main (usually the UI) thread to run without being blocked/slowed down.
A worker is an object created using a constructor (e.g.
Worker()
) that runs a named JavaScript file — this file contains the code that will run in the worker thread; workers run in another global context that is different from the current
window
. This context is represented by either a
DedicatedWorkerGlobalScope
object (in the case of dedicated workers - workers that are utilized by a single script), or a
SharedWorkerGlobalScope
(in the case of shared workers - workers that are shared between multiple scripts).
You can run whatever code you like inside the worker thread, with some exceptions. For example, you can't directly manipulate the DOM from inside a worker, or use some default methods and properties of the
window
object. But you can use a large number of items available under
window
,包括
WebSockets
, and data storage mechanisms like
IndexedDB
。见
可用于工作者的函数和类
了解更多细节。
Data is sent between workers and the main thread via a system of messages — both sides send their messages using the
postMessage()
method, and respond to messages via the
onmessage
event handler (the message is contained within the
消息
event's
data
property). The data is copied rather than shared.
Workers may in turn spawn new workers, as long as those workers are hosted within the same
origin
as the parent page. In addition, workers may use
XMLHttpRequest
for network I/O, with the exception that the
responseXML
and
channel
attributes on
XMLHttpRequest
始终返回
null
.
In addition to dedicated workers, there are other types of worker:
SharedWorker
了解更多细节。
ChromeWorker
了解更多细节。
注意 : As per the Web workers Spec , worker error events should not bubble (see bug 1188141 . This has been implemented in Firefox 42.
AbstractWorker
Worker
or
SharedWorker
).
Worker
Represents a running worker thread, allowing you to pass messages to the running worker code.
WorkerLocation
Worker
.
SharedWorker
WorkerGlobalScope
Window
does for normal web content). Different types of worker have scope objects that inherit from this interface and add more specific features.
DedicatedWorkerGlobalScope
WorkerGlobalScope
and adding some dedicated features.
SharedWorkerGlobalScope
WorkerGlobalScope
and adding some dedicated features.
WorkerNavigator
Represents the identity and state of the user agent (the client):
We have created a couple of simple demos to show basic usage:
You can find out more information on how these demos work in 使用 Web 工作者 .
| 规范 | 状态 | 注释 |
|---|---|---|
|
HTML 实时标准
在该规范中的 Web Workers 定义。 |
实时标准 | 初始定义。 |
Worker
interface
SharedWorker
interface