JS实现summarize1与异步summarize2,接收任意Promise返回值之和
实现代码
summarize1 实现
要求接收任意数量Promise入参、返回Promise的普通函数实现:
function summarize1(...promises) { // Promise.all 等待所有传入的Promise全部resolve return Promise.all(promises) // 对返回的结果数组求和 .then(resolveValues => resolveValues.reduce((total, current) => total + current, 0)) }
summarize2 实现
要求为async异步函数的实现:
async function summarize2(...promises) { // 等待所有Promise完成得到结果数组 const resolveValues = await Promise.all(promises) // 求和后返回,async函数会自动把返回值包装为Promise return resolveValues.reduce((total, current) => total + current, 0) }
常见错误说明
你之前四次尝试的核心问题如下:
- 没有使用
...剩余参数语法处理任意数量的入参,全部固定了只处理1-2个Promise,无法适配任意数量入参的要求 - 未等待Promise resolve就直接对Promise对象本身做运算,得到的不是预期的数值结果
- 错误地在非async函数内部使用await关键字,会直接触发语法报错
- 存在循环引用、逻辑闭环等问题,比如第四次尝试中在Promise executor里resolve当前正在构造的Promise实例
内容的提问来源于stack exchange,提问作者NerdyStudent
相关产品推荐
相关产品推荐

