如何使用 async/await 实现 Promise.race()

Luk*_*rek 2 javascript es6-promise

如何使用 async 和 await 实现 Promise.race() 方法?

async function promiseRace(promises) {
  const results = [];
  for (const p of promises) {
    await p;
    results.push(p);
  }
  return results[0];
}
Run Code Online (Sandbox Code Playgroud)

我试图像上面那样实现它,但这不起作用。

Jon*_*lms 5

你不能。使用时,await您将停止执行一个特定的承诺。要Promise.race手动实现,您必须摆弄回调:

function race(promises) {
  return new Promise((resolve, reject) => {
     for(const promise of promises)
        promise.then(resolve, reject);
  });
}
Run Code Online (Sandbox Code Playgroud)


Ber*_*rgi 5

你不能。就像您不能Promise使用async/实现构造函数一样await。请记住,这await只是then调用的语法糖- 您不能仅使用它来实现基本的 promise 组合器。