SIMPLE

【JavaScript】ES2025新機能 Promise.try

毎年新機能がリリースされるJsvaScriptですが、2024年2月から2025年1月までに実装された機能を紹介します。

前提

新機能は以下でApril 2024~October 2024になっているものを紹介します。

※ブラウザの対応状況、バージョンにより実行できないものもあります。

https://github.com/tc39/proposals/blob/main/finished-proposals.md

Promise.try

内容

Promise.tryにより、非同期と同期で動作する関数をまとめて実行できるようになりました。

以下ような2つの関数があるとき、

// 非同期に動く関数
function asyncFunction() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Hello Async');
    }, 1000);
  });
}

// 同期で動く関数
function syncFunction() {
  return 'Hello Sync';  
}

関数を実行するには別々の方法で実行する必要がありました。

// 非同期関数はthenで実行
asyncFunction().then(
  (result) => {
    console.log(result); // 1秒後にHello
  }
);

// 同期関数はそのまま実行
const result =  syncFunction();
console.log(result) // すぐにHello

ですが、今回のPromise.tryにより同じように実行できるようになりました。

Promise.try(asyncFunction).then(
  (result) => {
    console.log(result); // Hello
  }
)

Promise.try(syncFunction).then(
  (result) => {
    console.log(result); // Hello
  }
)

何がうれしいの?

同期関数をPromiseに組み込むことができて、可読性が向上します。

極論、今後非同期、同期か分からない関数はすべてPromise.tryで実行すればよくなります。

また、エラーハンドリングも実行方法が同じになることで共通化できることができます。

結論

エラーハンドリングが共通化されて幸せになれます。

牧野

RPCブログ管理者