【问题标题】:Console.log doesn't work in async functionConsole.log 在异步函数中不起作用
【发布时间】:2017-06-15 22:12:53
【问题描述】:

我正在尝试在异步函数中记录如下语句:

async generateCharts (insights) {
  const { url } = await this.reportsClient.createReport(insights)
  console.log('url from reports', url)
  return this.parse(url)
}

虽然没有显示日志语句,但我确信这是因为异步功能。那是对的吗?无论如何要解决这个问题?

【问题讨论】:

  • 我刚刚运行了您的代码,它运行良好。您是否尝试过强制createReport 来验证这一点?
  • 仅供参考,async 函数不是 ES6 (ES2015) 的一部分。他们成为今年发布的 ES2017 的一部分。
  • @MikeC 看起来是个问题!

标签: javascript async-await ecmascript-2017


【解决方案1】:

您的示例缺少上下文,但恕我直言,那是因为您的 createReport 函数永远不会实现。 没有其他原因无法执行 console.log。

【讨论】:

    【解决方案2】:

    请注意,错误会在异步函数中“默默地”被吞没—— 就像在普通的 Promises 中一样。除非我们添加 try / catch 块 围绕 await 表达式,未捕获的异常——不管是否 它们是在您的 async 函数的主体中提出的,或者在它的 在等待期间暂停 - 将拒绝异步返回的承诺 功能。

    javascript-async-await#error-handling

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-05
      • 2021-09-05
      • 2020-05-31
      • 2021-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多