WorkerGlobalScope: rejectionhandled 事件

Baseline 已广泛支持

此特性已经十分成熟,可在许多设备和浏览器版本上使用。自 2020 年 7 月以来,它已在各大浏览器中可用。

注意:此功能仅在 Web Workers 中可用。

当一个被拒绝的 Promise 被延迟处理时(即,在拒绝导致 unhandledrejection 事件发生后才为其附加处理程序),该 rejectionhandled 事件会被发送到脚本的全局作用域(通常是 WorkerGlobalScope)。

这可以与 unhandledrejection 事件结合使用,用于调试和提高应用程序的整体容错能力。unhandledrejection 事件在 Promise 被拒绝但当时没有相应的处理程序时发送。

语法

在诸如 addEventListener() 之类的方法中使用事件名称,或设置事件处理程序属性。

js
addEventListener("rejectionhandled", (event) => { })

onrejectionhandled = (event) => { }

事件类型

一个 PromiseRejectionEvent。继承自 Event

Event PromiseRejectionEvent

事件属性

PromiseRejectionEvent.promise 只读

被拒绝的 Promise

PromiseRejectionEvent.reason 只读

一个值或 Object,指示 Promise 被拒绝的原因,与传递给 Promise.reject() 的值相同。

示例

您可以使用 rejectionhandled 事件将 Promise 的拒绝及其拒绝原因记录到控制台。

js
self.addEventListener("rejectionhandled", (event) => {
  console.log(`Promise rejected; reason: ${event.reason}`);
});

规范

规范
HTML
# handler-workerglobalscope-onrejectionhandled

浏览器兼容性

另见