手写promise.race

4 阅读1分钟

要求

实现一个 MyPromiseRace 函数

Input (输入):

  • promises: 一个包含 Promise 对象(或普通值)的可迭代对象(通常是数组)。

Output (输出):

  • 返回一个新的 Promise

行为描述 (Behavior):

  1. 竞速机制:只要 promises 数组中的任意一个 Promise 率先改变状态(无论是 Resolved 还是 Rejected),返回的新 Promise 就立即采用该状态和结果。
  2. 一次性:一旦状态改变,后续其他 Promise 的完成或失败都应被忽略。
  3. 兼容性:数组中可能包含非 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);
    }
  })
}