Stavo tentando di concatenare due funzioni asincrone, perché la prima aveva un parametro di ritorno condizionale che causava l'esecuzione della seconda o l'uscita dal modulo. Tuttavia, ho riscontrato un comportamento strano che non riesco a trovare nelle specifiche.
async function isInLobby() {
//promise.all([chained methods here])
let exit = false;
if (someCondition) exit = true;
}
Questo è uno snippet imbastardito del mio codice (puoi vedere l'intero ambito qui ), che controlla semplicemente se un giocatore è già in una lobby, ma è irrilevante.
Successivamente abbiamo questa funzione asincrona.
async function countPlayer() {
const keyLength = await scardAsync(game);
return keyLength;
}
Questa funzione non deve essere eseguita se exit === true.
Ho provato a fare
const inLobby = await isInLobby();
Questo speravo attendesse i risultati, quindi posso usarlo inLobbyper eseguire in modo condizionale countPlayer, tuttavia ho ricevuto un errore di tipo senza dettagli specifici.
Perché non puoi awaituna asyncfunzione al di fuori dell'ambito della funzione? So che è una promessa di zucchero, quindi deve essere incatenato thenma perché dentro countPlayerposso aspettare un'altra promessa, ma fuori non posso await isInLobby?
await isInLobby()e comeinLobbysi usa? Inoltre, dove / come sicountPlayerchiama?