我在JavaScript中遇到Promise.race()
方法的an implementation,它按预期工作,但对我来说没有多大意义。
const race = (...promises) =>
new Promise((res, rej) => {
promises.forEach(p => p.then(res).catch(rej));
});
forEach
循环如何最终分配特定承诺的功能?
答案 0 :(得分:0)
根据定义,无论您多久拨打resolve
或reject
,承诺都会解决/拒绝一次。因此,你所构建的承诺将解决所通过的承诺的第一个承诺。
答案 1 :(得分:0)
我想您可以举一个更简单的示例,为变量分配一些新名称,这样更容易掌握。
const race = ([A, B, C]) =>
const outer = new Promise((resolveRace, rejectRace) => {
A.then(resolveRace).catch(rejectRace);
B.then(resolveRace).catch(rejectRace);
C.then(resolveRace).catch(rejectRace);
}
return outer;
});
对于每个“内部”承诺,我们使用“外部” Promise resolveRace
和rejectRace
函数分配成功/错误回调。