WorkerGlobalScope: unhandledrejection event
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2020.
Hinweis: Diese Funktion ist nur in Web Workers verfügbar.
Das unhandledrejection
Ereignis wird an den globalen Scope (typischerweise WorkerGlobalScope
) eines Skripts gesendet, wenn ein Promise
abgelehnt wird, der keinen Ablehnungs-Handler hat.
Dies ist nützlich für das Debuggen und um eine fallback 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 Versprechen abgelehnt wurde, wie es anPromise.reject()
übergeben wurde.
Beispiele
>Grundlegende Fehlerprotokollierung
Dieses Beispiel protokolliert Informationen über die unbehandelte Promise-Ablehnung in der Konsole.
self.addEventListener("unhandledrejection", (event) => {
console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
});
Sie können auch die onunhandledrejection
Ereignis-Handler-Eigenschaft verwenden, um den Ereignis-Listener einzurichten:
self.onunhandledrejection = (event) => {
console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
};
Standardbehandlung verhindern
Viele Umgebungen (wie Node.js) melden unbehandelte Promise-Ablehnungen standardmäßig in der Konsole. Sie können dies verhindern, indem Sie einen Handler für unhandledrejection
Ereignisse hinzufügen, der – zusätzlich zu allen anderen Aufgaben, die Sie ausführen möchten – preventDefault()
aufruft, um das Ereignis zu stornieren und zu verhindern, dass es zur Laufzeit an das Protokollierungscode weitergegeben wird. Dies funktioniert, da 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> |
Browser-Kompatibilität
Loading…