3

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?

Jorayen
  • 1,737
  • 2
  • 21
  • 52

2 Answers2

4

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());
PVermeer
  • 2,631
  • 2
  • 10
  • 18
3

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.

F. Bauer
  • 219
  • 2
  • 5