Promise.reject()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

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 Promise zurück, das abgelehnt wird. Für Debugging-Zwecke und selektives Fehlerfangen ist es nützlich, reason als ein instanceof Error zu machen.

Promise.reject() ist generisch und unterstützt Subclassing, was bedeutet, dass es auf Subklassen von Promise angewendet werden kann und das Ergebnis ein Promise des Subklassentyps sein wird. Dafür muss der Konstruktor der Subklasse dieselbe Signatur wie der Promise()-Konstruktor implementieren — er akzeptiert eine einzelne executor-Funktion, die mit den resolve- und reject-Callbacks als Parameter aufgerufen werden kann. Promise.reject() ist im Wesentlichen eine Kurzform für new Promise((resolve, reject) => reject(reason)).

Im Gegensatz zu Promise.resolve() umschließt Promise.reject() den reason immer in einem neuen Promise-Objekt, selbst wenn reason bereits ein Promise ist.

Beispiele

Verwendung der statischen Methode Promise.reject()

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

Ablehnen mit einem Promise

Im Gegensatz zu Promise.resolve verwendet die Methode Promise.reject keine bestehenden Promise-Instanzen wieder. Sie gibt immer eine neue Promise-Instanz zurück, die den reason umschließt.

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

Aufruf 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 Promise()-Konstruktor implementiert. Zum Beispiel können wir sie auf einem Konstruktor aufrufen, der 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),
    );
  }
}

Promise.reject.call(NotPromise, "foo"); // Logs "Rejected foo"

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-promise.reject

Browser-Kompatibilität

Siehe auch