Estaba intentando encadenar dos funciones asíncronas juntas, porque la primera tenía un parámetro de retorno condicional que hacía que la segunda se ejecutara o saliera del módulo. Sin embargo, encontré un comportamiento extraño que no puedo encontrar en las especificaciones.
async function isInLobby() {
//promise.all([chained methods here])
let exit = false;
if (someCondition) exit = true;
}
Este es un fragmento bastardo de mi código (puede ver el alcance completo aquí ), que simplemente verifica si un jugador ya está en un lobby, pero eso es irrelevante.
A continuación, tenemos esta función asincrónica.
async function countPlayer() {
const keyLength = await scardAsync(game);
return keyLength;
}
Esta función no necesita ejecutarse si exit === true.
Traté de hacer
const inLobby = await isInLobby();
Esto esperaba que esperara los resultados, por lo que puedo usarlo inLobbypara ejecutar condicionalmente countPlayer, sin embargo, recibí un error de tipo sin detalles específicos.
¿Por qué no puede realizar awaituna asyncfunción fuera del alcance de la función? Sé que es una promesa de azúcar, por lo que debe estar encadenada, thenpero ¿por qué countPlayerpuedo esperar otra promesa adentro , pero afuera no puedo await isInLobby?
await isInLobby()y cómoinLobbyse usa? Además, ¿dónde / cómo secountPlayerllama?