javascript等待多个链式异步函数

时间:2019-07-07 12:51:33

标签: javascript node.js ecmascript-2017

说我有以下内容:

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

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

如果我要分开函数的链接并等待每个诺言,它会很好地工作。 有没有办法将这些诺言链接在一起并等待它们在一起?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

您都需要等待下摆:

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

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