Я пытался связать две асинхронные функции вместе, потому что первая имела параметр условного возврата, из-за которого вторая либо запускалась, либо выходила из модуля. Однако я обнаружил странное поведение, которое не смог найти в спецификациях.
async function isInLobby() {
//promise.all([chained methods here])
let exit = false;
if (someCondition) exit = true;
}
Это убогий фрагмент моего кода (вы можете увидеть полный объем здесь ), который просто проверяет, находится ли игрок в лобби, но это не имеет значения.
Далее у нас есть асинхронная функция.
async function countPlayer() {
const keyLength = await scardAsync(game);
return keyLength;
}
Эту функцию не нужно запускать, если exit === true.
Я пытался сделать
const inLobby = await isInLobby();
Я надеялся, что это будет ждать результатов, поэтому я могу использовать inLobbyдля условного запуска countPlayer, однако я получил ошибку типа без каких-либо конкретных деталей.
Почему вы не можете awaitвыполнить asyncфункцию за пределами функции? Я знаю, что это сахарное обещание, поэтому оно должно быть привязано к нему, thenно почему внутри countPlayerя могу ждать другого обещания, а снаружи я не могу await isInLobby?
await isInLobby()и какinLobbyиспользуется? Кроме того, где / какcountPlayerназывается?