Eu estava tentando encadear duas funções assíncronas, porque a primeira tinha um parâmetro de retorno condicional que fazia a segunda executar ou sair do módulo. No entanto, encontrei um comportamento estranho que não consigo encontrar nas especificações.
async function isInLobby() {
//promise.all([chained methods here])
let exit = false;
if (someCondition) exit = true;
}
Este é um snippet bastardizado do meu código (você pode ver o escopo completo aqui ), que simplesmente verifica se um jogador já está em um lobby, mas isso é irrelevante.
Em seguida, temos essa função assíncrona.
async function countPlayer() {
const keyLength = await scardAsync(game);
return keyLength;
}
Esta função não precisa ser executada se exit === true
.
Eu tentei fazer
const inLobby = await isInLobby();
Esperava que este fosse aguardar os resultados, então posso usar inLobby
para executar condicionalmente countPlayer
, porém recebi um erro de tipo sem detalhes específicos.
Por que você não pode await
uma async
função fora do escopo da função? Eu sei que é uma promessa de açúcar, então deve ser acorrentada, then
mas por que em countPlayer
eu posso esperar outra promessa, mas fora, eu não posso await
isInLobby
?
await isInLobby()
e comoinLobby
é usado? Além disso, onde / como écountPlayer
chamado?