WorkerGlobalScope:unhandledrejection 事件
注意:此功能仅在 Web Workers 中可用。
当一个没有拒绝处理程序的 Promise 被拒绝时,会将 unhandledrejection 事件发送到脚本的全局作用域(通常是 WorkerGlobalScope)。
这对于调试和为意外情况提供备用错误处理非常有用。
语法
在诸如 addEventListener() 之类的方法中使用事件名称,或设置事件处理程序属性。
js
addEventListener("unhandledrejection", (event) => { })
onunhandledrejection = (event) => { }
事件类型
一个 PromiseRejectionEvent。继承自 Event。
事件属性
PromiseRejectionEvent.promise只读-
被拒绝的 JavaScript
Promise。 PromiseRejectionEvent.reason只读-
一个值或
Object,指示 Promise 被拒绝的原因,与传递给Promise.reject()的值相同。
示例
基本错误日志记录
此示例将有关未处理的 Promise 拒绝的信息记录到控制台。
js
self.addEventListener("unhandledrejection", (event) => {
console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
});
您还可以使用 onunhandledrejection 事件处理程序属性来设置事件监听器。
js
self.onunhandledrejection = (event) => {
console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
};
阻止默认处理
许多环境(例如 Node.js)默认会向控制台报告未处理的 Promise 拒绝。您可以通过添加一个 unhandledrejection 事件的处理器来阻止这种情况发生。该处理器除了执行您希望执行的其他任何任务外,还会调用 preventDefault() 来取消事件,阻止其冒泡到运行时日志记录代码进行处理。这是有效的,因为 unhandledrejection 是可取消的。
js
self.addEventListener("unhandledrejection", (event) => {
// code for handling the unhandled rejection
// …
// Prevent the default handling (such as outputting the
// error to the console)
event.preventDefault();
});
规范
| 规范 |
|---|
| HTML # handler-workerglobalscope-onunhandledrejection |
浏览器兼容性
加载中…