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