Ich habe versucht, zwei asynchrone Funktionen miteinander zu verketten, da die erste einen bedingten Rückgabeparameter hatte, der dazu führte, dass die zweite entweder ausgeführt wurde oder das Modul verließ. Ich habe jedoch ein merkwürdiges Verhalten gefunden, das ich in den Spezifikationen nicht finden kann.
async function isInLobby() {
//promise.all([chained methods here])
let exit = false;
if (someCondition) exit = true;
}
Dies ist ein bastardisierter Ausschnitt meines Codes (Sie können den vollen Umfang hier sehen ), der einfach prüft, ob sich ein Spieler bereits in einer Lobby befindet, aber das ist irrelevant.
Als nächstes haben wir diese asynchrone Funktion.
async function countPlayer() {
const keyLength = await scardAsync(game);
return keyLength;
}
Diese Funktion muss nicht ausgeführt werden, wenn exit === true.
Ich habe es versucht
const inLobby = await isInLobby();
Ich hoffte, dass dies auf Ergebnisse warten würde, damit ich inLobbyes bedingt ausführen kann countPlayer, erhielt jedoch einen Typfehler ohne spezifische Details.
Warum können Sie awaitkeine asyncFunktion außerhalb des Funktionsumfangs ausführen? Ich weiß, dass es ein Zuckerversprechen ist, also muss es angekettet werden, thenaber warum countPlayerkann ich auf ein anderes Versprechen warten, aber draußen kann ich nicht await isInLobby?
await isInLobby()haben und wieinLobbyes verwendet wird? Auch wo / wiecountPlayerheißt das?