Newly available 主要ブラウザの最新版で対応済み。古いブラウザが対象外なら使用可能。

対応ブラウザ

機能 デスクトップ モバイル
Chrome
Edge
Firefox
Safari
Chrome Android
Safari iOS
119
119
121
17.4
119
17.4
1+対応 (バージョン) 未対応 注釈あり サブ機能の解説は MDN Web Docs (CC BY-SA 2.5)

基本構文

JAVASCRIPT
const { promise, resolve, reject } = Promise.withResolvers();

// Resolve from an event handler
button.addEventListener('click', () => resolve('clicked'));
setTimeout(() => reject(new Error('timeout')), 5000);

const result = await promise;

ライブデモ

Promise.withResolvers

外部から resolve / reject できる Promise を1行で作成。

プレビュー全画面表示

従来の方式との比較

Promise コンストラクタの中で resolve を取り出す手間が省ける。

プレビュー全画面表示

イベント駆動での活用

ボタンクリック等の外部イベントを Promise 化。

プレビュー全画面表示

実務での使いどころ

  • Promise.withResolvers() の活用

    Promise.withResolvers() 静的メソッドは、新しい Promise オブジェクトと、Promise() コンストラクターの実行子に渡す 2 つの引数に対応する、解決または拒否の 2 つの関数を含むオブジェクトを返します。

注意点

  • 古いブラウザ(IE等)では対応していない。対象ブラウザを確認すること。

アクセシビリティ

  • JavaScript による動的更新時は、aria-live リージョンで変更をスクリーンリーダーに通知する。