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

如何从async异步函数中返回多个结果并在then方法中正确获取?

你只需要调整memberdata异步函数的返回值结构,和你预期的取值格式对齐即可,then 方法的调用语法不需要做任何修改,可选的实现方案如下:

方案1:最优实现(推荐,仅发起1次查询,性能最好)

你三个查询都是查同表同id的不同字段,完全可以合并为一次数据库查询,无需分三次请求:

const memberdata = async function() {
  // 一次查询直接返回三个字段的结果,格式和你原有单字段查询的返回结构一致
  const res = await doquery('name,sex,age','members','id',userid);
  return res;
};

调整后你原有写好的then取值代码可以直接使用,不需要修改。

方案2:保留三次查询的实现(如果业务必须拆分查询)

如果必须拆分三次单独查询,你需要把三次查询的结果拼接为你预期的结构再返回,同时推荐用Promise.all实现并行查询,比串行await性能更高:

const memberdata = async function() {
  // 并行发起三个查询,等待所有查询完成后解构结果
  const [nameRes, sexRes, ageRes] = await Promise.all([
    doquery('name','members','id',userid),
    doquery('sex','members','id',userid),
    doquery('age','members','id',userid)
  ]);
  // 拼接为你预期的数组嵌套对象格式
  return [{
    name: nameRes[0].name,
    sex: sexRes[0].sex,
    age: ageRes[0].age
  }];
};

该方案下你原有写好的then取值代码同样可以直接使用,不需要调整。


内容的提问来源于stack exchange,提问作者Cain Nuke

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:57:04