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

咨询:用Promise.then()改写JavaScript async/await代码的最优方式

你的写法能实现功能,但不是最简洁高效的——犯了Promise的常见冗余错误:没必要手动套一层new Promise,因为dbQuery()和dbQuery2()本身就返回Promise,直接用链式调用就能搞定,代码更清爽,还能避免嵌套。

优化后的版本可以这样写:

let getDatabaseData = () => {
  return dbQuery()
    .then(res1 => {
      // 拿到res1后调用dbQuery2,再合并结果
      return dbQuery2(res1).then(res2 => res1 + res2);
    });
}

getDatabaseData().then(dbData => {
  console.log(dbData);
});

甚至可以更紧凑一点:

let getDatabaseData = () => 
  dbQuery().then(res1 => dbQuery2(res1).then(res2 => res1 + res2));

getDatabaseData().then(console.log);

链式调用完全适配你的场景:getDatabaseData作为封装两个异步操作、合并结果的辅助方法,链式写法能让异步逻辑按顺序线性展开,比嵌套写法可读性高得多,也更符合Promise的设计初衷。

另外补充:如果需要处理异步过程中的错误,只需要在链式末尾加上.catch(err => {/* 错误处理逻辑 */})即可,和async/await里的try/catch作用一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 21:19:56