WorkerGlobalScope - 表示任何工作线程范围的接口

WorkerGlobalScopeWeb Workers API 的接口,表示任何工作线程范围的接口。工作线程没有浏览上下文;此范围包含通常由 Window 对象传达的信息 - 在这种情况下,是事件处理程序,控制台或关联的 WorkerNavigator 对象。每个 WorkerGlobalScope 都有自己的事件循环。

每种工作线程都有专门的接口:DedicatedWorkerGlobalScope 用于专用工作线程,SharedWorkerGlobalScope 用于共享工作线程,ServiceWorkerGlobalScope 用于 ServiceWorkerself 属性返回每个上下文的专用范围。

属性

该接口从 EventTarget 接口,WindowOrWorkerGlobalScopeWindowEventHandlers 混合继承了属性。

标准属性

WorkerGlobalScope.navigator 只读

返回与工作线程关联的 WorkerNavigator。它是一个特定的导航器对象,主要是 Navigator 的一个子集,用于浏览范围,但适用于工作线程。

WorkerGlobalScope.self 只读

返回对 WorkerGlobalScope 本身的引用。大多数情况下,它是一个特定的范围,例如 DedicatedWorkerGlobalScopeSharedWorkerGlobalScopeServiceWorkerGlobalScope

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 接口,WindowOrWorkerGlobalScopeWindowEventHandlers 混合继承了方法。

标准方法

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()

接受各种不同的图像源,并返回解析为 ImageBitmapPromise。可选地,将源裁剪为以 (sx, sy) 为起点,宽度为 sw 且高度为 sh 像素的矩形。

WindowOrWorkerGlobalScope.fetch()

开始从网络获取资源的过程。

WindowOrWorkerGlobalScope.queueMicrotask()

入队一个微任务 - 一个简短的函数,在 JavaScript 代码执行完成且控制权未返回给 JavaScript 调用者之后,而在处理回调和其他任务之前执行。这允许您的代码在不干扰其他(可能是更高优先级的)代码的情况下,但是在浏览器运行时重新获得控制权之前(这可能取决于您需要完成的工作)运行。

WindowOrWorkerGlobalScope.setInterval()

计划每次给定毫秒数后执行的函数。

WindowOrWorkerGlobalScope.setTimeout()

安排要在给定时间内执行的功能。

废弃的方法

WorkerGlobalScope.close()

丢弃在 WorkerGlobalScope 事件循环中排队的所有任务,从而有效地关闭此特定范围。在较新的浏览器版本中, WorkerGlobalScope 可以在 DedicatedWorkerGlobalScopeSharedWorkerGlobalScope 上使用。进行此更改是为了使服务工作线程无法使用 close(),因为不应在服务工作线程上使用它,并且在调用它时总会抛出异常(请参见 Mozilla bug 1336043)。

实例

您不应直接在代码中访问 WorkerGlobalScope;但是,其属性和方法是由更具体的全局范围继承的,例如 DedicatedWorkerGlobalScopeSharedWorkerGlobalScope。例如,您可以使用以下两行将另一个脚本导入工作线程并打印出工作线程作用域的 navigator 对象的内容:

importScripts('foo.js');
console.log(navigator);

由于工作线程脚本的全局范围实际上是您正在运行的工作线程的全局范围(DedicatedWorkerGlobalScope 或其它任何东西),并且所有工作线程全局范围都从 WorkerGlobalScope 继承方法,属性等,您可以在不指定父对象的情况下运行上述代码。

规范

规范 状态 备注
HTML Living Standard
WorkerGlobalScope 的定义
现行的标准 -

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持4123.51010.64
close4123.5 支持11.54
console412291 支持 支持 支持
dump 不支持 不支持 不支持 不支持 不支持 不支持
importScripts41241010.64
languagechange 事件41274 支持11.54
location4123.5 支持11.54
navigator4173.5 支持11.54
onclose4123.5 — 50 支持11.54
onerror4123.5 支持11.54
onlanguagechange41274 支持11.54
onoffline4≤7929 未知 未知 未知
ononline4≤7929 未知 未知 未知
performance 支持≤7934 未知 未知 未知
self4123.5 支持11.54

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持 支持 支持 未知4 未知113.2
close37 支持 未知4 未知 未知 未知
console37 支持 未知291 未知 未知 未知
dump 不支持 不支持 未知4 未知 不支持 不支持
importScripts≤3718 未知4 未知113.2
languagechange 事件 未知40 未知 不支持 未知 支持5.1
location3740 未知4 未知 支持5.1
navigator3740 未知4 未知 支持5.1
onclose3740 未知4 — 50 未知 支持5.1
onerror3740 未知4 未知 支持5.1
onlanguagechange3740 未知 不支持 未知 支持5.1
onoffline 支持40 未知29 未知 未知 未知
ononline 支持40 未知29 未知 未知 未知
performance 支持 支持 未知34 未知 未知 未知
self3740 未知34 未知 支持5.1

1. 在 Firefox 30 之前,控制台的类型为 WorkerConsole,而不是 Console

相关链接