【问题标题】:javascript await on multiple chained async functionsjavascript等待多个链式异步函数
【发布时间】:2019-11-17 05:23:45
【问题描述】:

假设我有以下内容:

const a = new A();
await a.getB().action();

A.prototype.getB()async 以及 B.prototype.action()。 如果我尝试等待函数链接,则会收到错误消息: TypeError: a.getB(...).action is not a function.

如果我将函数的链接分开并等待每个承诺,它就可以正常工作。 有没有办法将这些承诺链接在一起并等待它们?

【问题讨论】:

  • 你试过(await a.getB()).action()吗?
  • 试试:await (await a.getB()).action()await a.getB().then(result => result.action())
  • 我希望有一些我可以逃脱的合成糖,我想我将不得不等待每个承诺

标签: javascript node.js ecmascript-2017


【解决方案1】:

你需要等待下摆:

const a = new A();
const b = await a.getB();
await b.action();

或者

const a = new A();
await a.getB().then(b => b.action());

【讨论】:

  • var是关键字,当你尝试运行这段代码时会抛出错误variable name is missing
【解决方案2】:

这是因为 getB 是一个异步函数,它不返回 B 对象,而是返回一个没有 action 方法的 Promise 对象。该承诺将进一步使用 B 对象解析,您可以使用 PVermeer 提出的 then 方法捕获解析后的值。

【讨论】:

  • 感谢您澄清这一点。我正要进行编辑:)
猜你喜欢
  • 2011-03-04
  • 2015-05-22
  • 2021-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
相关资源
最近更新 更多