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

如何在async/await执行完成后打印createPost()的返回值

问题解答

核心结论

你当前的代码写法已经天然满足「createPost()完全执行完成后才打印ret值」的需求,完全无需担心日志提前触发的问题。

原因说明

  • await关键字的作用就是暂停当前async函数的执行,等待其后的异步任务决议完成后再继续执行后续代码。你写的ret = await createPost(p)会一直等到createPost内部的axios请求完成、返回r.data.key并赋值给ret后,才会执行下一行的打印逻辑,不会出现时序问题。
  • 你顾虑的「同步代码先于异步代码执行」的规则在这里不生效,await已经将后续的打印操作转为等待createPost完成后才会触发的异步任务,时序完全可控。

可选优化

由于ret变量仅用于日志打印,你可以直接省略变量声明,简化代码,同时也不需要在while循环外部提前定义变量:

module.exports = async (p) => {
  try {
    while (true) {
      switch (x) {
        case 1:
          isOk = await getStatusCode({ ... });
          break
        case 2:
          isOk = await getString({ ... });
          break
        default:
          throw "";
      };
      // 直接在日志内等待createPost返回结果即可
      appLogger.info(`Created post: ${await createPost(p)}`);
    }
  } catch (error) {
    appLogger.error(error);
  }
}

注:你提供的示例代码里while(true)没有终止逻辑、x变量未定义,属于你删除无关代码导致的缺失,实际业务场景补充对应逻辑即可。

内容的提问来源于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.29 02:09:00