WorkerGlobalScope: unhandledrejection Ereignis
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.
Hinweis: Diese Funktion ist nur in Web Workers verfügbar.
Das unhandledrejection
Ereignis wird an den globalen Gültigkeitsbereich (typischerweise WorkerGlobalScope
) eines Skripts gesendet, wenn ein Promise
, das keinen Ablehnungs-Handler hat, abgelehnt wird.
Dies ist nützlich für das Debuggen und um eine Fehlerbehandlung für unerwartete Situationen bereitzustellen.
Syntax
Verwenden Sie den Ereignisnamen in Methoden wie addEventListener()
, oder setzen Sie eine Ereignis-Handler-Eigenschaft.
addEventListener("unhandledrejection", (event) => { })
onunhandledrejection = (event) => { }
Ereignistyp
Ein PromiseRejectionEvent
. Erbt von Event
.
Ereigniseigenschaften
PromiseRejectionEvent.promise
Schreibgeschützt-
Das JavaScript
Promise
, das abgelehnt wurde. PromiseRejectionEvent.reason
Schreibgeschützt-
Ein Wert oder
Object
, der angibt, warum das Promise abgelehnt wurde, wie er anPromise.reject()
übergeben wurde.
Beispiele
Grundlegendes Fehlerprotokoll
Dieses Beispiel protokolliert Informationen über die nicht behandelte Promise-Ablehnung in die Konsole.
self.addEventListener("unhandledrejection", (event) => {
console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
});
Sie können auch die onunhandledrejection
Ereignis-Handler-Eigenschaft verwenden, um den Ereignislistener einzurichten:
self.onunhandledrejection = (event) => {
console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
};
Standardbehandlung verhindern
Viele Umgebungen (wie Node.js) melden nicht behandelte Promise-Ablehnungen standardmäßig in der Konsole. Sie können verhindern, dass dies geschieht, indem Sie einen Handler für unhandledrejection
Ereignisse hinzufügen, der—neben anderen Aufgaben, die Sie ausführen möchten—preventDefault()
aufruft, um das Ereignis abzubrechen und zu verhindern, dass es an den Protokollierungscode der Laufzeitumgebung weitergeleitet wird. Dies funktioniert, weil unhandledrejection
abbrechbar ist.
self.addEventListener("unhandledrejection", (event) => {
// code for handling the unhandled rejection
// …
// Prevent the default handling (such as outputting the
// error to the console)
event.preventDefault();
});
Spezifikationen
Specification |
---|
HTML # handler-workerglobalscope-onunhandledrejection |