WorkerGlobalScope: unhandledrejection Ereignis
Hinweis: Dieses Feature ist nur verfügbar in Web Workers.
Das unhandledrejection
Ereignis wird an den globalen Scope (typischerweise WorkerGlobalScope
) eines Skripts gesendet, wenn ein Promise
, das keinen Rejektions-Handler hat, abgelehnt wird.
Dies ist nützlich zum Debuggen und um Fallback-Fehlerbehandlungen für unerwartete Situationen bereitzustellen.
Syntax
Verwenden Sie den Ereignisnamen in Methoden wie addEventListener()
oder setzen Sie eine Event-Handler-Eigenschaft.
self.addEventListener("unhandledrejection", (event) => {});
self.onunhandledrejection = (event) => {};
Ereignistyp
Ein PromiseRejectionEvent
. Erbt von Event
.
Ereigniseigenschaften
PromiseRejectionEvent.promise
Nur lesbar-
Das JavaScript
Promise
, das abgelehnt wurde. PromiseRejectionEvent.reason
Nur lesbar-
Ein Wert oder ein
Object
, das angibt, warum das Promise abgelehnt wurde, wie anPromise.reject()
übergeben.
Beispiele
Grundlegendes Fehlerprotokoll
Dieses Beispiel protokolliert Informationen über die nicht behandelte Promise-Ablehnung in der Konsole.
self.addEventListener("unhandledrejection", (event) => {
console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
});
Sie können auch die onunhandledrejection
-Event-Handler-Eigenschaft verwenden, um den Event-Listener einzurichten:
self.onunhandledrejection = (event) => {
console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
};
Verhindern der Standardbehandlung
Viele Umgebungen (wie Node.js) melden standardmäßig nicht behandelte Promise-Ablehnungen in der Konsole. Sie können dies verhindern, indem Sie einen Handler für unhandledrejection
-Ereignisse hinzufügen, der—zusätzlich zu anderen Aufgaben, die Sie ausführen möchten—preventDefault()
aufruft, um das Ereignis abzubrechen und zu verhindern, dass es durch die Logging-Code der Laufzeitumgebung behandelt wird. Dies funktioniert, weil unhandledrejection
abbruchfähig 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 Standard # handler-workerglobalscope-onunhandledrejection |
Browser-Kompatibilität
BCD tables only load in the browser