Javascript 履行诺言

Javascript 履行诺言,javascript,asynchronous,promise,Javascript,Asynchronous,Promise,我在JavaScript中遇到了Promise.race()方法,它按预期工作,但对我来说意义不大 const race = (...promises) => new Promise((res, rej) => { promises.forEach(p => p.then(res).catch(rej)); }); forEach循环如何分配特定承诺的函数?根据定义,承诺只解析/拒绝一次,无论您调用resolve或reject的频率有多高。因此,您构建

我在JavaScript中遇到了
Promise.race()
方法,它按预期工作,但对我来说意义不大

const race = (...promises) =>
    new Promise((res, rej) => {
        promises.forEach(p => p.then(res).catch(rej));
});

forEach
循环如何分配特定承诺的函数?

根据定义,承诺只解析/拒绝一次,无论您调用
resolve
reject
的频率有多高。因此,您构建的承诺将解析为所传递承诺的第一个承诺解析的内容。

我想您可以做一个更简单的示例,为变量指定一些新名称,这样会更容易理解

const race = ([A, B, C]) =>
    const outer = new Promise((resolveRace, rejectRace) => {
        A.then(resolveRace).catch(rejectRace); // A wins 
        B.then(resolveRace).catch(rejectRace); // B wins 
        C.then(resolveRace).catch(rejectRace); // C wins 
    }
    return outer;
});

对于每个“内部”承诺,我们使用“外部”承诺
resolveRace
rejectRace
函数分配成功/错误回调。

您所说的“分配特定承诺的函数”是什么意思?请参阅。@riwu承诺的构造函数需要一个
解析
拒绝
functions@Bergi它的工作原理有什么不同?@BenjaminGruenbaum最重要的是,它需要多个参数,而不是一个iterable。另外,
Promise.resolve()