Я пытался связать две функции асинхронного взаимодействия, потому что первый имел условный параметр возврата, который заставлял второй запускать или выходить из модуля. Тем не менее, я нашел странное поведение, которое я не могу найти в спецификациях.Использование await вне функции async
async function isInLobby() {
//promise.all([chained methods here])
let exit = false;
if (someCondition) exit = true;
}
Это извращается фрагмент моего кода (вы можете увидеть в полном объеме here), который просто проверяет, если ли уже в вестибюле игрок, но это не имеет значения.
Далее у нас есть эта функция асинхронизации.
async function countPlayer() {
const keyLength = await scardAsync(game);
return keyLength;
}
Эта функция не должна запускаться, если exit === true
.
Я пытался сделать
const inLobby = await isInLobby();
В этом я надеялся, что будет ждать до результатов, так что я могу использовать inLobby
условно запустить countPlayer
, однако я получил TypeError без каких-либо конкретных деталей.
Почему вы не можете await
a async
функция вне сферы действия функции? Я знаю, что это обещание сахара, поэтому его нужно приковать к then
, но почему это так: countPlayer
Я могу ждать другого обещания, но на улице я не могу await
isInLobby
?
Можете ли вы показать нам, где * вы ждали isInLobby() 'и как используется' inLobby'? Кроме того, где/как называется 'countPlayer'? – Bergi
@Bergi Я связал свое репо для фактического контекста. Слишком много кода, чтобы поставить в вопрос –
Я не вижу, где проблема с этим (возможно, вы уже обновили репо)? Если вы ссылаетесь на 'isInLobby(), тогда (... countPlayer(). Then ...' part, решение тривиально: просто создайте функцию, в которой содержатся эти вызовы ('(req, res) =>' one) 'async'. – Bergi