问题
Say I have the following:
const a = new A();
await a.getB().action();
A.prototype.getB()
is async
as-well as B.prototype.action()
.
If I try to await on the chaining of the functions I get an error:
TypeError: a.getB(...).action is not a function
.
If I am separating the chaining of the functions and awaiting each promise it works fine. Is there a way to chain these promises and await them together?
回答1:
This is because getB
is an async function and does not return a B object but a Promise
object that have no action
method. This promise will further be resolved with a B object and you can access to the resolved value by catching it with the then
method as proposed by PVermeer.
回答2:
You need to await hem both:
const a = new A();
const b = await a.getB();
await b.action();
Or
const a = new A();
await a.getB().then(b => b.action());
来源:https://stackoverflow.com/questions/56922317/javascript-await-on-multiple-chained-async-functions