Spec-Zone.ru › JavaScript

Promise.reject()

Базовая поддержка Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

Статический метод Promise.reject() возвращает объект Promise, который отклоняется с указанной причиной.

Попробовать

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

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

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

Синтаксис

Promise.reject(reason)

Параметры

reason
Причина, по которой этот Promise был отклонён.

Возвращаемое значение

Объект Promise, который отклоняется с указанной причиной.

Описание

Статическая функция Promise.reject возвращает Promise, который был отклонён. Для целей отладки и выборочного перехвата ошибок полезно сделать reason объектом instanceof Error.

Promise.reject() является универсальным (generic) и поддерживает создание подклассов, что означает, что он может быть вызван для подклассов Promise, и результатом будет промис типа подкласса. Для этого конструктор подкласса должен реализовать ту же сигнатуру, что и конструктор Promise(), — принимать единственную функцию executor, которую можно вызвать с колбэками resolve и reject в качестве параметров. Promise.reject() — это, по сути, сокращение для new Promise((resolve, reject) => reject(reason)).

В отличие от Promise.resolve(), Promise.reject() всегда оборачивает reason в новый объект Promise, даже если reason уже является Promise.

Примеры

Использование статического метода Promise.reject()

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

Отклонение промисом

В отличие от Promise.resolve, метод Promise.reject не использует повторно существующие экземпляры Promise. Он всегда возвращает новый экземпляр Promise, который оборачивает reason.

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

Вызов reject() для конструктора, не являющегося Promise

Promise.reject() — это универсальный (generic) метод. Он может быть вызван для любого конструктора, который реализует ту же сигнатуру, что и конструктор Promise(). Например, мы можем вызвать его для конструктора, который передаёт console.log в качестве reject:

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

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-promise.reject

Совместимость с браузерами

Десктоп Мобильные Сервер
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
reject
32
12
29
19
8
32
29
19
8
2.0
4.4.3
8
1.0.0
1.0
0.12.0

Смотрите также

  • Promise

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/reject

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API