WorkerGlobalScope - 表示任何工作线程范围的接口
WorkerGlobalScope
是 Web Workers API 的接口,表示任何工作线程范围的接口。工作线程没有浏览上下文;此范围包含通常由 Window
对象传达的信息 - 在这种情况下,是事件处理程序,控制台或关联的 WorkerNavigator
对象。每个 WorkerGlobalScope
都有自己的事件循环。
每种工作线程都有专门的接口:DedicatedWorkerGlobalScope
用于专用工作线程,SharedWorkerGlobalScope
用于共享工作线程,ServiceWorkerGlobalScope
用于 ServiceWorker。 self
属性返回每个上下文的专用范围。
属性
该接口从 EventTarget
接口,WindowOrWorkerGlobalScope
和 WindowEventHandlers
混合继承了属性。
标准属性
WorkerGlobalScope.navigator
只读
返回与工作线程关联的 WorkerNavigator
。它是一个特定的导航器对象,主要是 Navigator
的一个子集,用于浏览范围,但适用于工作线程。
WorkerGlobalScope.self
只读
返回对 WorkerGlobalScope
本身的引用。大多数情况下,它是一个特定的范围,例如 DedicatedWorkerGlobalScope
,SharedWorkerGlobalScope
或 ServiceWorkerGlobalScope
。
WorkerGlobalScope.location
只读
返回与工作线程关联的 WorkerLocation
。它是一个特定的位置对象,主要是 Location
的一个子集,用于浏览范围,但适用于工作程序。
非标准属性
WorkerGlobalScope.performance
只读
返回与工作线程关联的 Performance
。它是常规的性能对象,只是工作线程只能使用其属性和方法的一部分。
WorkerGlobalScope.console
只读
返回与工作线程相关联的 Console
。
从其他地方实现的属性
WindowOrWorkerGlobalScope.caches
只读
返回与当前上下文关联的 CacheStorage
对象。该对象启用诸如存储数据以供脱机使用以及生成对请求的自定义响应之类的功能。
WindowOrWorkerGlobalScope.indexedDB
只读
返回一个 IDBFactory
对象,为应用程序提供一种机制来异步访问索引数据库的功能。
WindowOrWorkerGlobalScope.isSecureContext
只读
返回一个布尔值,指示当前上下文是否安全。
WindowOrWorkerGlobalScope.origin
只读
返回全局对象的来源,序列化为字符串。 (这似乎尚未在任何浏览器中实现。)
事件
error
发生错误时触发。也可以通过 WorkerGlobalScope.onerror
属性处理。
offline
当浏览器无法访问网络并且将 navigator.onLine
的值切换为 false
时触发。也可以通过 WorkerGlobalScope.onoffline
属性处理。
online
当浏览器已经访问网络并且将 navigator.onLine
的值切换为 true
时触发。也可以通过 WorkerGlobalScope.ononline
属性处理。
languagechange
当用户的首选语言更改时,在全局 / 工作器作用域对象上触发。也可以通过 WorkerGlobalScope.onlanguagechange
属性处理。
close
一个 EventHandler
,表示触发 close
事件时要调用的代码。也可以通过 WorkerGlobalScope.onclose
属性处理。
rejectionhandled
当 Promise
拒绝时,无论是否有处理程序来捕获拒绝,都会触发该事件。也可以通过 onrejectionhandled
事件处理程序属性来处理。
unhandledrejection
当 Promise
拒绝而没有处理程序来捕获拒绝时触发。也可以使用 onunhandledrejection
事件处理程序属性来处理。
方法
该接口从 EventTarget
接口,WindowOrWorkerGlobalScope
和 WindowEventHandlers
混合继承了方法。
标准方法
WorkerGlobalScope.importScripts()
将一个或多个脚本导入工作人员的作用域。您可以指定任意多个,并以逗号分隔。例如:importScripts('foo.js', 'bar.js');
非标准方法
WorkerGlobalScope.dump()
允许您在 stdout 中(即在终端中)编写消息。这与 Firefox 的 window.dump
相同,但适用于工作线程。
从其他地方实现的方法
WindowOrWorkerGlobalScope.atob()
解码已使用 base-64 编码编码的数据字符串。
WindowOrWorkerGlobalScope.btoa()
根据二进制数据字符串创建一个以 64 为基数编码的 ASCII 字符串。
WindowOrWorkerGlobalScope.clearInterval()
取消使用 WindowOrWorkerGlobalScope.setInterval()
执行的重复集。
WindowOrWorkerGlobalScope.clearTimeout()
取消使用 WindowOrWorkerGlobalScope.setTimeout()
执行的延迟集。
WindowOrWorkerGlobalScope.createImageBitmap()
接受各种不同的图像源,并返回解析为 ImageBitmap
的 Promise
。可选地,将源裁剪为以 (sx
, sy
) 为起点,宽度为 sw
且高度为 sh
像素的矩形。
WindowOrWorkerGlobalScope.fetch()
开始从网络获取资源的过程。
WindowOrWorkerGlobalScope.queueMicrotask()
入队一个微任务 - 一个简短的函数,在 JavaScript 代码执行完成且控制权未返回给 JavaScript 调用者之后,而在处理回调和其他任务之前执行。这允许您的代码在不干扰其他(可能是更高优先级的)代码的情况下,但是在浏览器运行时重新获得控制权之前(这可能取决于您需要完成的工作)运行。
WindowOrWorkerGlobalScope.setInterval()
计划每次给定毫秒数后执行的函数。
WindowOrWorkerGlobalScope.setTimeout()
安排要在给定时间内执行的功能。
废弃的方法
WorkerGlobalScope.close()
丢弃在 WorkerGlobalScope
事件循环中排队的所有任务,从而有效地关闭此特定范围。在较新的浏览器版本中, WorkerGlobalScope
可以在 DedicatedWorkerGlobalScope
和 SharedWorkerGlobalScope
上使用。进行此更改是为了使服务工作线程无法使用 close()
,因为不应在服务工作线程上使用它,并且在调用它时总会抛出异常(请参见 Mozilla bug 1336043)。
实例
您不应直接在代码中访问 WorkerGlobalScope
;但是,其属性和方法是由更具体的全局范围继承的,例如 DedicatedWorkerGlobalScope
和 SharedWorkerGlobalScope
。例如,您可以使用以下两行将另一个脚本导入工作线程并打印出工作线程作用域的 navigator
对象的内容:
importScripts('foo.js');
console.log(navigator);
由于工作线程脚本的全局范围实际上是您正在运行的工作线程的全局范围(
DedicatedWorkerGlobalScope
或其它任何东西),并且所有工作线程全局范围都从WorkerGlobalScope
继承方法,属性等,您可以在不指定父对象的情况下运行上述代码。
规范
规范 | 状态 | 备注 |
---|---|---|
HTML Living Standard WorkerGlobalScope 的定义 |
现行的标准 | - |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 4 | 12 | 3.5 | 10 | 10.6 | 4 |
close | 4 | 12 | 3.5 | 支持 | 11.5 | 4 |
console | 4 | 12 | 291 | 支持 | 支持 | 支持 |
dump | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
importScripts | 4 | 12 | 4 | 10 | 10.6 | 4 |
languagechange 事件 | 4 | 12 | 74 | 支持 | 11.5 | 4 |
location | 4 | 12 | 3.5 | 支持 | 11.5 | 4 |
navigator | 4 | 17 | 3.5 | 支持 | 11.5 | 4 |
onclose | 4 | 12 | 3.5 — 50 | 支持 | 11.5 | 4 |
onerror | 4 | 12 | 3.5 | 支持 | 11.5 | 4 |
onlanguagechange | 4 | 12 | 74 | 支持 | 11.5 | 4 |
onoffline | 4 | ≤79 | 29 | 未知 | 未知 | 未知 |
ononline | 4 | ≤79 | 29 | 未知 | 未知 | 未知 |
performance | 支持 | ≤79 | 34 | 未知 | 未知 | 未知 |
self | 4 | 12 | 3.5 | 支持 | 11.5 | 4 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 支持 | 支持 | 未知 | 4 | 未知 | 11 | 3.2 |
close | 37 | 支持 | 未知 | 4 | 未知 | 未知 | 未知 |
console | 37 | 支持 | 未知 | 291 | 未知 | 未知 | 未知 |
dump | 不支持 | 不支持 | 未知 | 4 | 未知 | 不支持 | 不支持 |
importScripts | ≤37 | 18 | 未知 | 4 | 未知 | 11 | 3.2 |
languagechange 事件 | 未知 | 40 | 未知 | 不支持 | 未知 | 支持 | 5.1 |
location | 37 | 40 | 未知 | 4 | 未知 | 支持 | 5.1 |
navigator | 37 | 40 | 未知 | 4 | 未知 | 支持 | 5.1 |
onclose | 37 | 40 | 未知 | 4 — 50 | 未知 | 支持 | 5.1 |
onerror | 37 | 40 | 未知 | 4 | 未知 | 支持 | 5.1 |
onlanguagechange | 37 | 40 | 未知 | 不支持 | 未知 | 支持 | 5.1 |
onoffline | 支持 | 40 | 未知 | 29 | 未知 | 未知 | 未知 |
ononline | 支持 | 40 | 未知 | 29 | 未知 | 未知 | 未知 |
performance | 支持 | 支持 | 未知 | 34 | 未知 | 未知 | 未知 |
self | 37 | 40 | 未知 | 34 | 未知 | 支持 | 5.1 |
1. 在 Firefox 30 之前,控制台的类型为 WorkerConsole
,而不是 Console
。