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

如何将async/await与Promise结合使用?async函数如何对接外层then/catch

问题根因
  • 你当前的createPost已经是async函数,天然会返回Promise实例,本身是支持调用then/catch的,现在无法正确触发外层回调是两个代码问题导致的:
    1. 成功执行路径没有返回需要传递给外层then的结果值
    2. 内部catch捕获到错误后只打印了日志,没有向外抛出错误,导致外层感知不到reject状态,错误被内部吞掉了
修复方案

直接修改createPost的实现即可,不需要改动外层代码:

module.exports = async (p) => {
  // 此处省略大量代码
  try {
    const r = await getStat();
    // 新增:把需要传递给外层then的结果返回
    return r;
  } catch (error) {
    console.log(error);
    // 新增:向外抛出错误,触发外层的catch回调
    throw error;
  };
};
可选优化

如果不需要在createPost内部打印错误日志,可以直接移除try/catch逻辑,内部异步报错会自动向外抛出,外层同样可以正常捕获:

module.exports = async (p) => {
  // 此处省略大量代码
  const r = await getStat();
  return r;
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:06:02