この解答例は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
されます。