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 オブジェクトを返します。
試してみましょう
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 を 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); // false rejected.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> |