まず、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を利用することができます。