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 |
瀏覽器相容性
載入中…