>[danger]Promise.race Promise.race是一个Promise方法,它接收一个包含多个Promise对象的可迭代对象(如数组)作为参数。它返回一个新的Promise对象,该对象将与最先解决或拒绝的Promise对象保持相同的状态。 当传递给Promise.race的可迭代对象中的任意一个Promise对象解决或拒绝时,返回的Promise对象会立即解决或拒绝,并采用第一个解决或拒绝的Promise的值或原因。 这种特性使得Promise.race在处理竞态条件(race condition)时非常有用。例如,可以使用Promise.race来实现超时功能,即如果某个异步操作在指定时间内未完成,就进行相应的处理。 **描述**:只要`promises`中有一个率先改变状态,就返回这个率先改变的`Promise`实例的返回值。 **实现**: ~~~javascript Promise.race = function(promises){ return new Promise((resolve, reject) => { if(Array.isArray(promises)) { if(promises.length === 0) return resolve(promises); promises.forEach((item) => { Promise.resolve(item).then( value => resolve(value), reason => reject(reason) ); }) } else return reject(new TypeError("Argument is not iterable")); }); } ~~~