以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!

BFE.devAI解答 - JavaScript 代码题
35. 实现`Promise.race()`

实现Promise.race()的代码如下:

function race(promises) {  return new Promise((resolve, reject) => {    for (let promise of promises) {      promise.then(resolve).catch(reject);    }  });}

该函数接收一个包含Promise实例的数组,返回一个新的Promise实例。

函数内部通过遍历Promise实例数组,将每个Promise实例的resolve和reject方法传递给新的Promise实例。当其中一个Promise实例resolve或reject时,新的Promise实例也会resolve或reject。

使用示例:

let p1 = new Promise(resolve => setTimeout(() => resolve('p1'), 1000));let p2 = new Promise((resolve, reject) => setTimeout(() => reject('p2'), 500));let p3 = new Promise(resolve => setTimeout(() => resolve('p3'), 2000));race([p1, p2, p3])  .then(result => {    console.log(result);  })  .catch(error => {    console.error(error);  });

输出:

p1

在上面的示例中,Promise.race()返回的Promise实例只会resolve第一个完成的Promise实例,也就是p1,p2和p3中谁完成的最快。因为p2在500ms后被reject,而p1和p3分别在1000ms和2000ms后被resolve,所以结果为p1。