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 inLobbypara executar condicionalmente countPlayer, porém recebi um erro de tipo sem detalhes específicos.
Por que você não pode awaituma asyncfunção fora do escopo da função? Eu sei que é uma promessa de açúcar, então deve ser acorrentada, thenmas por que em countPlayereu posso esperar outra promessa, mas fora, eu não posso await isInLobby?
await isInLobby()e comoinLobbyé usado? Além disso, onde / como écountPlayerchamado?