この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。
BFE.devでのAI解答例 - JavaScript コーディング問題
34. `Promise.any()`を実装する
はい、以下は自作の Promise.any()
実装例です。
function PromiseAny(promises) { return new Promise((resolve, reject) => { let rejections = []; for (const p of promises) { Promise.resolve(p).then(resolve).catch(error => { rejections.push(error); if (rejections.length === promises.length) { reject(new AggregateError('No Promise in Promise.any was resolved', rejections)); } }); } });}
この実装では、与えられた promises
を1つずつ反復し、各プロミスを解決するか、拒否するかを見て、 resolve
または catch
するように設定しています。 AggregateError
を実装している場合は、 reject
されます。それ以外の場合、最初に解決されたプロミスが resolve
されます。