>[danger]Promise.any - Promise.any是一个Promise方法,它接收一个包含多个Promise对象的可迭代对象(如数组)作为参数。它返回一个新的Promise对象,该对象将与第一个解决的Promise对象保持相同的状态。 - 与Promise.race不同,Promise.any会等待传递给它的所有Promise对象都被拒绝后才会拒绝,只有当至少有一个Promise对象被解决时,返回的Promise对象才会解决。它将采用第一个解决的Promise的值作为其解决值。 - 这种特性使得Promise.any在处理多个异步操作的情况下非常有用,只要有一个操作成功完成,即可继续执行相关的逻辑。如果所有操作都失败,则可以在Promise.any返回的Promise对象上进行错误处理。 **描述**:只要 `promises` 中有一个`fulfilled`,就返回第一个`fulfilled`的`Promise`实例的返回值。 **实现** ~~~javascript Promise.any = function(promises) { return new Promise((resolve, reject) => { if(Array.isArray(promises)) { if(promises.length === 0) return reject(new AggregateError("All promises were rejected")); let count = 0; promises.forEach((item, index) => { Promise.resolve(item).then( value => resolve(value), reason => { count++; if(count === promises.length) { reject(new AggregateError("All promises were rejected")); }; } ); }) } else return reject(new TypeError("Argument is not iterable")); }); } ~~~