Promise.allSettledのポリフィルをNode.jsで使用する方法


まず、Promise.allSettledメソッドがサポートされているかどうかを確認するために、現在のNode.jsのバージョンを確認しましょう。

console.log(process.version);

もしNode.jsのバージョンがv12以上であれば、Promise.allSettledメソッドがサポートされているため、追加のポリフィルは必要ありません。

しかし、バージョンがv12未満の場合や、他の環境(ブラウザなど)でもサポートされていない場合は、次のようなポリフィルを使用することができます。

if (!Promise.allSettled) {
  Promise.allSettled = function (promises) {
    return Promise.all(promises.map(promise => Promise.resolve(promise).then(value => ({
      status: 'fulfilled',
      value
    }), reason => ({
      status: 'rejected',
      reason
    }))));
  };
}

このポリフィルは、Promise.allSettledメソッドが存在しない場合に、代替の実装を提供します。使用例を以下に示します。

const promises = [
  Promise.resolve('成功したPromise'),
  Promise.reject(new Error('失敗したPromise')),
  Promise.resolve('もう一つの成功したPromise')
];
Promise.allSettled(promises)
  .then(results => {
    results.forEach(result => {
      if (result.status === 'fulfilled') {
        console.log('成功:', result.value);
      } else {
        console.log('失敗:', result.reason);
      }
    });
  });

上記のコードでは、Promise.allSettledメソッドを使用して非同期処理の結果を取得し、各Promiseのステータスと結果をコンソールに出力しています。

以上が、Node.jsでPromise.allSettledメソッドを使用するためのポリフィルと具体的なコード例の紹介です。これにより、環境の制約を超えてPromise.allSettledを利用することができます。