Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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.

js
addEventListener("unhandledrejection", (event) => { })

onunhandledrejection = (event) => { }

Ereignistyp

Ein PromiseRejectionEvent. Erbt von Event.

Event PromiseRejectionEvent

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 an Promise.reject() übergeben wurde.

Beispiele

Grundlegende Fehlerprotokollierung

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

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

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

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
# handler-workerglobalscope-onunhandledrejection

Browser-Kompatibilität

Siehe auch