Promise.reject()
BaselineWidely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 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()
は汎用的であり、サブクラス化に対応しています。つまり、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 |