このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
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 2015年7月.
Promise.reject() は静的メソッドで、引数で与えられた理由で拒否されたPromise オブジェクトを返します。
In this article
試してみましょう
function resolved(result) { console.log("Resolved");}function rejected(result) { console.error(result);}Promise.reject(new Error("fail")).then(resolved, rejected);// 予想される結果: Error: fail構文
Promise.reject(reason)引数
reasonこの
Promiseが拒否された理由です。
返値
与えられた理由で拒否されたPromise です。
解説
静的なPromise.reject 関数は拒否されたPromise を返します。デバッグのために捕捉するエラーを選別したい場合は、reason をinstanceofError にかけると良いでしょう。
Promise.reject() は汎用的であり、サブクラス化に対応しています。つまり、Promise のサブクラスで呼び出すことができ、その結果はサブクラスの種類のプロミスになります。これを行うには、サブクラスのコンストラクターはPromise() コンストラクターと同じ呼び出し定義を実装する必要があります。これは、resolve とreject コールバックを引数として呼び出すことができる単一のexecutor 関数を引数に取ります。Promise.reject() は、本質的にnew Promise((resolve, reject) => reject(reason)) の短縮形です。
Promise.resolve() とは異なり、Promise.reject() はreason がすでにPromise であっても、常に新しいPromise オブジェクトでreason をラップします。
例
>静的な Promise.reject() メソッドの使用
Promise.reject(new Error("fail")).then( () => { // not called }, (error) => { console.error(error); // Stacktrace },);プロミスの拒否
Promise.resolve とは異なり、Promise.reject メソッドは既存のPromise インスタンスを再利用することはありません。常にreason を包んだ新しいPromise インスタンスを返します。
const p = Promise.resolve(1);const rejected = Promise.reject(p);console.log(rejected === p); // falserejected.catch((v) => { console.log(v === p); // true});Promise 以外のコンストラクターに対する reject() の呼び出し
Promise.reject() は汎用的なメソッドです。これは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), ); }}Promise.reject.call(NotPromise, "foo"); // Logs "Rejected foo"仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-promise.reject> |