WorkerGlobalScope: unhandledrejection Ereignis

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, 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.

js
self.addEventListener("unhandledrejection", (event) => {});
self.onunhandledrejection = (event) => {};

Ereignistyp

Ereigniseigenschaften

PromiseRejectionEvent.promise Schreibgeschützt

Das JavaScript Promise, das abgelehnt wurde.

PromiseRejectionEvent.reason Schreibgeschützt

Ein Wert oder ein Object, das angibt, warum das Promise abgelehnt wurde, wie an Promise.reject() übergeben.

Beispiele

Grundlegendes Fehlerprotokoll

Dieses Beispiel protokolliert Informationen über die nicht behandelte Promise-Ablehnung in der Konsole.

js
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:

js
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.

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();
});

Spezifikationen

Specification
HTML Standard
# handler-workerglobalscope-onunhandledrejection

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch