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

概要

Promise.try() は渡された関数を実行し、同期的に例外をスローしても rejected Promise として扱います。Promise.resolve().then(fn) の改善版です。

対応ブラウザ

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

基本構文

JAVASCRIPT
// Both synchronous and asynchronous functions are acceptable
Promise.try(() => {
  if (cached) return cachedValue; // Return synchronously
  return fetch('/api/data');      // Return a Promise
}).then(result => console.log(result));

ライブデモ

Start a chain from Promise.try

Use Promise.try when available, otherwise fall back to Promise.resolve().then().

JavaScript
出力
「実行」ボタンを押してください

Capture sync exceptions

Normalize thrown synchronous errors into a rejected promise chain.

JavaScript
出力
「実行」ボタンを押してください

Mix sync and async steps

Start from sync setup and continue into asynchronous work without branching.

JavaScript
出力
「実行」ボタンを押してください

実務での使いどころ

  • Promise.try() の活用

    同期・非同期関数を統一的に Promise でラップするメソッド。エラーハンドリングを一元化。

注意点

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

アクセシビリティ

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

Powered by web-features