You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 20:54:02