Javascript 履行诺言
我在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的频率有多高。因此,您构建
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()