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 inLobby
para ejecutar condicionalmente countPlayer
, sin embargo, recibí un error de tipo sin detalles específicos.
¿Por qué no puede realizar await
una async
función fuera del alcance de la función? Sé que es una promesa de azúcar, por lo que debe estar encadenada, then
pero ¿por qué countPlayer
puedo esperar otra promesa adentro , pero afuera no puedo await
isInLobby
?
await isInLobby()
y cómoinLobby
se usa? Además, ¿dónde / cómo secountPlayer
llama?