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

Node.js async函数中使用map返回Promise { <pending> } 如何解决

问题原因
  • 你没有等待this.entityRepository.findAll()的异步执行结果就提前返回了resultModules,此时变量还未完成赋值
  • Array.map中传入async函数时,返回的数组每个元素都是Promise实例,必须通过Promise.all批量等待所有Promise完成,才能拿到最终的业务数据
修复方案

既然方法本身已经声明为async,直接用await语法替代then回调逻辑更简洁,在map得到Promise数组后包裹Promise.all等待所有内部异步查询完成。

完整修复代码
public async execute(): Promise<any> {
  // 等待第一步异步查询拿到数组X
  const res = await this.entityRepository.findAll();
  // map生成Promise数组后,用Promise.all等待所有子异步任务完成
  const resultModules = await Promise.all(
    res.map(async seg => {
      const modules = await this.segmentModuleRepository.findBySegmentFormatted(seg.id);
      console.log('modules: ', modules);
      return {
        ...seg,
        modules,
      };
    })
  );
  console.log('resultModules', resultModules);
  return resultModules;
}

内容的提问来源于stack exchange,提问作者Eduardo Fellipe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:45:01