この解答例はChatGPTによって生成されています,正しいかは自己判断で。
BFE.devでのAI解答例 - JavaScript コーディング問題
32. `Promise.all()`を実装する
はい、以下は Promise.all()
の単純な実装例です。
function myPromiseAll(promises) {
return new Promise((resolve, reject) => {
const results = [];
let counter = 0;
promises.forEach((promise, index) => {
Promise.resolve(promise).then((result) => {
results[index] = result;
counter++;
if (counter === promises.length) {
resolve(results);
}
}).catch((error) => reject(error));
});
});
}
この実装は、引数に渡された promises
配列に含まれる全ての Promise オブジェクトが解決されたら、結果の配列を解決するようにしています。Promise.resolve()
を使用して、非同期/同期の両方の関数を実行できるようにしました。また、最初に失敗した Promise があれば、直ちに失敗を返します。