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

View in English Always switch to English

Promise.reject()

Baseline
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.

Die statische Methode Promise.reject() gibt ein Promise-Objekt zurück, das mit einem angegebenen Grund abgelehnt wird.

Probieren Sie es aus

function resolved(result) {
  console.log("Resolved");
}

function rejected(result) {
  console.error(result);
}

Promise.reject(new Error("fail")).then(resolved, rejected);
// Expected output: Error: fail

Syntax

js
Promise.reject(reason)

Parameter

reason

Grund, warum dieses Promise abgelehnt wurde.

Rückgabewert

Ein Promise, das mit dem angegebenen Grund abgelehnt wird.

Beschreibung

Die statische Funktion Promise.reject gibt ein abgelehntes Promise zurück. Für Debugging-Zwecke und selektives Abfangen von Fehlern ist es hilfreich, reason zu einem instanceof Error zu machen.

Promise.reject() ist generisch und unterstützt Vererbung, was bedeutet, dass sie auf Unterklassen von Promise aufgerufen werden kann und das Ergebnis ein Promise des Unterklassentyps ist. Dazu muss der Konstruktor der Unterklasse dieselbe Signatur wie der Konstruktor Promise() implementieren — er muss eine einzelne executor-Funktion akzeptieren, die mit den Callbacks resolve und reject als Parametern aufgerufen werden kann. Promise.reject() ist im Wesentlichen eine Kurzform für new Promise((resolve, reject) => reject(reason)).

Anders als Promise.resolve() verpackt Promise.reject() reason immer in ein neues Promise-Objekt, selbst wenn reason bereits ein Promise ist.

Beispiele

Verwenden der statischen Methode Promise.reject()

js
Promise.reject(new Error("fail")).then(
  () => {
    // not called
  },
  (error) => {
    console.error(error); // Stacktrace
  },
);

Ablehnen mit einem Promise

Anders als Promise.resolve verwendet die Methode Promise.reject vorhandene Promise-Instanzen nicht wieder. Sie gibt immer eine neue Promise-Instanz zurück, die reason verpackt.

js
const p = Promise.resolve(1);
const rejected = Promise.reject(p);
console.log(rejected === p); // false
rejected.catch((v) => {
  console.log(v === p); // true
});

Aufrufen von reject() auf einem Nicht-Promise-Konstruktor

Promise.reject() ist eine generische Methode. Sie kann auf jedem Konstruktor aufgerufen werden, der dieselbe Signatur wie der Konstruktor Promise() implementiert. Beispielsweise können wir sie auf einem Konstruktor aufrufen, der ihr console.log als reject übergibt:

js
class NotPromise {
  constructor(executor) {
    // The "resolve" and "reject" functions behave nothing like the
    // native promise's, but Promise.reject() calls them in the same way.
    executor(
      (value) => console.log("Resolved", value),
      (reason) => console.log("Rejected", reason),
    );
  }

  static reject = Promise.reject;
}

const p = NotPromise.reject("foo"); // Logs "Rejected foo"
// p is a NotPromise instance

Spezifikationen

Spezifikation
ECMAScript® 2027 Language Specification
# sec-promise.reject

Browser-Kompatibilität

Siehe auch