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 inLobby
es bedingt ausführen kann countPlayer
, erhielt jedoch einen Typfehler ohne spezifische Details.
Warum können Sie await
keine async
Funktion außerhalb des Funktionsumfangs ausführen? Ich weiß, dass es ein Zuckerversprechen ist, also muss es angekettet werden, then
aber warum countPlayer
kann ich auf ein anderes Versprechen warten, aber draußen kann ich nicht await
isInLobby
?
await isInLobby()
haben und wieinLobby
es verwendet wird? Auch wo / wiecountPlayer
heißt das?