要求
实现一个 MyPromiseRace 函数
Input (输入):
promises: 一个包含 Promise 对象(或普通值)的可迭代对象(通常是数组)。
Output (输出):
- 返回一个新的
Promise。
行为描述 (Behavior):
- 竞速机制:只要
promises数组中的任意一个 Promise 率先改变状态(无论是 Resolved 还是 Rejected),返回的新 Promise 就立即采用该状态和结果。 - 一次性:一旦状态改变,后续其他 Promise 的完成或失败都应被忽略。
- 兼容性:数组中可能包含非 Promise 的普通值(如
1,'string'),应将其视为立即 Resolved 的 Promise 处理。
实现
function MyPromiseRace(promises){
return new Promise((resolve, reject) => {
for(const item of promises) {
Promise.resolve(item) // 将非promise转为Promise对象统一处理
.then(resolve)
.catch(reject);
}
})
}