JavaScriptのPromiseが持つ3つの状態(state)の正しい組み合わせはどれか?
解説
正解は pending, fulfilled, rejected です。Promiseの3つの状態ECMAScript仕様で定義されているPromiseの状態は以下の3つです。// pending: 初期状態。まだ成功も失敗もしていない const p1 = new Promise(() => {}); // ずっと pending // fulfilled: 処理が成功した状態 const p2 = Promise.resolve('success'); // fulfilled // rejected: 処理が失敗した状態 const p3 = Promise.reject('error'); // rejected「resolved」は状態ではないよくある誤解として「resolved」を状態と混同するケースがあります。resolve() はPromiseの状態を変更する操作であり、状態そのものではありません。resolve() を呼ぶとPromiseは fulfilled になります(ただし、別のPromiseで resolve した場合はそのPromiseの結果に従います)。状態遷移のルールPromiseの状態は一度 fulfilled または rejected になると、二度と変化しません。これを「settled(確定)」と呼びます。Promise.allSettled() はこの性質を利用して、すべてのPromiseが確定するのを待つメソッドです。