Javascript ожидают нескольких асинхронных функций - PullRequest
1 голос
/ 07 июля 2019

Скажите, у меня есть следующее:

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

A.prototype.getB() равно async, а также B.prototype.action().Если я пытаюсь дождаться цепочки функций, я получаю сообщение об ошибке: TypeError: a.getB(...).action is not a function.

. Если я разделяю цепочку функций и ожидаю каждое обещание, все работает нормально.Есть ли способ связать эти обещания и ждать их вместе?

Ответы [ 2 ]

2 голосов
/ 07 июля 2019

Это потому, что getB является асинхронной функцией и не возвращает объект B, а объект Promise, у которого нет метода action.Это обещание будет дополнительно разрешено с помощью объекта B, и вы можете получить доступ к разрешенному значению, перехватив его с помощью метода then, предложенного PVermeer.

1 голос
/ 07 июля 2019

Вам нужно подождать оба:

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

Или

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