This solution is generated by ChatGPT, correctness is not guaranteed. You might also be able to find a solution fromcommunity posts.

AI solution for JavaScript Coding Question on BFE.dev
34. implement `Promise.any()`

Here's one possible implementation of Promise.any():

class AggregateError extends Error {  constructor(message, errors) {    super(message);    this.name = 'AggregateError';    this.errors = errors;  }}Promise.any = function(promises) {  return new Promise((resolve, reject) => {    const errors = [];    let resolved = false;    for (const promise of promises) {      promise.then(        value => {          if (!resolved) {            resolved = true;            resolve(value);          }        },        error => {          errors.push(error);          if (errors.length === promises.length) {            reject(new AggregateError('No Promise in Promise.any was resolved', errors));          }         }      );    }  });};// Example usage:const promise1 = new Promise(resolve => setTimeout(() => resolve('hello'), 100));const promise2 = new Promise((_, reject) => setTimeout(() => reject(new Error('error')), 200));const promise3 = new Promise(resolve => setTimeout(() => resolve('world'), 300));Promise.any([promise1, promise2, promise3])  .then(console.log) // outputs "hello"  .catch(console.error); // will not be called

The implementation creates a new Promise and loops through the input promises, adding then and catch handlers to each one. When a promise fulfills, the then handler checks if a promise has already been resolved; if not, it resolves the new promise with the value from that promise. When a promise is rejected, the catch handler adds the error to an array of errors, and checks if all promises have been rejected; if so, it rejects the new promise with an AggregateError.