Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
Promise.resolve() は静的メソッドで、 Promise を与えられた値で「解決」させます。値がプロミスの場合は、そのプロミスが返されます。その値が Thenable であれば、Promise.resolve() は then() メソッドを、準備した 2 つのコールバックと共に呼び出します。それ以外の場合は、その値で履行するプロミスが返されます。
この関数は複数階層のプロミス風オブジェクト (例えば、何かで解決するプロミスで解決するプロミス) を単一の階層に平坦化します。
この Promise で解決する際の引数。解決するための Promise または Thenable にすることもできます。
与えられた値で解決された Promise、または value がプロミスオブジェクトであった場合、値として渡されたプロミスです。解決されたプロミスは、履行、拒否、待機のいずれかの状態になることができます。例えば、拒否されたプロミスが解決しても、結果は拒否されたプロミスのままです。
Promise.resolve() はプロミスを 解決 します。これはプロミスを履行したり拒否したりすることとは異なります。用語の定義については、プロミスの説明を参照してください。簡単に言うと、 Promise.resolve() は、最終的な状態が他のプロミス、 Thenable オブジェクト、または他の値に依存しているプロミスを返します。
メモ: value 式の評価で同期的にエラーが発生する可能性がある場合、このエラーは捕捉されず、Promise.resolve() によって拒否されたプロミスにラップされます。この用途には Promise.try(() => value) を使用することを検討してください。
Promise.resolve() は汎用で、サブクラス化に対応しています。つまり、Promise のサブクラスで呼び出すことができ、その結果はサブクラス型のプロミスになります。これを行うには、サブクラスのコンストラクターは Promise() コンストラクターと同じ定義で実装する必要があります。引数として resolve と reject コールバックで呼び出すことができる単一の executor 関数を受け入れることができます。
Promise.resolve() は、ネイティブの Promise のインスタンスを特別扱いしています。 value が Promise またはそのサブクラスに属し、 value.constructor === Promise の場合、新しい Promise インスタンスを作成せずに、Promise.resolve() で直接 value を返すことができます。そうでない場合、Promise.resolve() は基本的に new Promise((resolve) => resolve(value)) の一括指定となります。
解決ロジックの大部分は,実際には Promise() コンストラクターに渡される resolve 関数で実装されます。概要をまとめると、次のようになります。
Promise.resolve() は、既存の Promise インスタンスを再利用します。ネイティブのプロミスを解決する場合は、ラッパーを作成せずに同じプロミスインスタンスを返します。
ログの順番が反転するのは、 then ハンドラーが非同期に呼び出されるために発生します。詳しくは then() のリファレンスを参照してください。
入れ子になった Thenable は、単一のプロミスに「深く平坦化」されます。
警告: 自分自身に解決する thenable に対して Promise.resolve() を呼び出さないでください。これは無限にネストしたプロミスを平坦化しようとするため、無限の再帰を引き起こします。
Promise.resolve() は汎用的なメソッドです。これは Promise() コンストラクターと同じ定義を実装した任意のコンストラクターで呼び出すことができます。例えば、resolve として console.log を渡すコンストラクターで呼び出すことができます。
入れ子になった Thenable を平坦化する機能は Promise() コンストラクターの resolve 関数で実装されています。そのため、他のコンストラクターで呼び出すと、そのコンストラクターが resolve 関数をどのように実装しているかによって入れ子の Thenable が平坦化されない場合があります。
| ECMAScript® 2027 Language Specification # sec-promise.resolve |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2025年8月21日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.