Web Workers API - Web API 接口参考 | MDN
https://developer.mozilla.org/zh-CN/docs/Web/API/Web_Workers_APIhtml
经过使用Web Workers,Web应用程序能够在独立于主线程的后台线程中,运行一个脚本操做。这样作的好处是能够在独立线程中执行费时的处理任务,从而容许主线程(一般是UI线程)不会所以被阻塞/放慢。git
使用构造函数(例如,Worker()
)建立一个 worker 对象, 构造函数接受一个 JavaScript文件URL — 这个文件包含了将在 worker 线程中运行的代码。worker 将运行在与当前 window
不一样的另外一个全局上下文中,这个上下文由一个对象表示,标准状况下为DedicatedWorkerGlobalScope
(标准 workers 由单个脚本使用; 共享workers使用SharedWorkerGlobalScope
)。github
你能够在worker 线程中运行任意的代码,但注意存在一些例外:直接在 worker 线程中操纵 DOM 元素;或使用window
对象中的某些方法和属性。大部分 window 对象的方法和属性是可使用的,包括 WebSockets,以及诸如 IndexedDB 和 FireFox OS 中独有的 Data Store API 这一类数据存储机制。更多信息请参见: Functions and classes available to workers 。web
主线程和 worker 线程相互之间使用 postMessage()
方法来发送信息, 而且经过 onmessage
这个 event handler来接收信息(传递的信息包含在 Message
这个事件的data
属性内) 。数据的交互方式为传递副本,而不是直接共享数据。浏览器
worker 能够另外生成新的 worker,这些 worker 与它们父页面的宿主相同。 此外,worker 能够经过 XMLHttpRequest
来访问网络,只不过 XMLHttpRequest
的 responseXML
和 channel
这两个属性的值将老是 null 。
服务器
除了专用 worker 以外,还有一些其余种类的 worker :网络
SharedWorker
。ChromeWorker
注意: 根据网络worker规范, worker错误事件不该该冒泡(参见bug 1188141)。该规范已在Firefox 42中实现。函数
AbstractWorker
Worker
或
SharedWorker
)
Worker
SharedWorker
WorkerGlobalScope
Window
有相同的做用)。不一样类型的worker都有从接口继承做用于对象,而且能够添加更多特定功能。
DedicatedWorkerGlobalScope
WorkerGlobalScope
,且可添加一些特有的功能。
SharedWorkerGlobalScope
WorkerGlobalScope
, 且可添加一些特有的功能。
WorkerNavigator
咱们建立了几个简单的demos以演示基本用法:oop
你能够在使用web workers中找到有关这些demos是如何工做的更多信息。post
规范 | 状态 | 评论 |
---|---|---|
HTML Living Standard | Living Standard | No change from Unknown. |