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

实现getABC()函数:聚合同步、回调、Promise函数结果并返回Promise

解决方案

问题分析

原实现的核心问题:

  • getB是异步回调函数,执行getB(cb)后回调要10ms后才触发,但getABC立刻返回了空的ARR,导致最终输出空数组
  • 回调内部的arr仅做了打印,没有关联到函数返回值,且getB本身无返回值,所以res为undefined

修正后的getABC函数体

function getABC() {
  // 将回调风格的getB转换为Promise
  const bPromise = new Promise(resolve => {
    getB(resolve);
  });
  
  // 同步获取A的结果,等待B和C的Promise完成后返回聚合结果
  return Promise.all([
    getA(),
    bPromise,
    getC()
  ]);
}

实现说明

  • 同步处理getA:直接调用getA()获取结果,Promise.all会自动将同步值包装为已resolved的Promise
  • 回调转Promise:用new Promise包裹getB,当getB的回调触发时,通过resolve传递B的值,把回调异步逻辑转为Promise规范
  • 聚合异步结果:Promise.all会等待所有传入的Promise(包括同步值)完成,然后按传入顺序返回结果数组['A', 'B', 'C'],完全符合需求

内容的提问来源于stack exchange,提问作者Sounav Saha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 23:31:04