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ß. Allerdings habe ich seltsames Verhalten gefunden, das ich in den Spezifikationen nicht finden kann.Verwenden von await außerhalb einer Async-Funktion
async function isInLobby() {
//promise.all([chained methods here])
let exit = false;
if (someCondition) exit = true;
}
Dies ist ein bastardized Schnipsel meines Codes (Sie können den vollen Umfang here sehen), dass einfach überprüft, ob ein Spieler in der Lobby, wenn schon, 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 versuchte
const inLobby = await isInLobby();
Dieser hoffte ich würde Ergebnisse erwarten, zu tun, so kann ich inLobby
verwenden bedingt countPlayer
zu laufen, aber ich ein Typeerror ohne spezifische Details erhalten.
Warum können Sie nicht await
eine async
Funktion außerhalb des Bereichs der Funktion? Ich weiß, es ist ein Zuckerversprechen, also muss es an then
angekettet werden, aber warum kann ich in countPlayer
kann ich ein anderes Versprechen erwarten, aber draußen kann ich nicht await
isInLobby
?
Können Sie uns zeigen * wo * Sie '' isInLobby() 'erwartet haben und wie' inLobby' verwendet wird? Wo/wie wird 'countPlayer' genannt? – Bergi
@Bergi Ich habe meinen Repo für den aktuellen Kontext verlinkt. Zu viel Code, um die Frage zu stellen –
Ich sehe nicht, wo das Problem damit ist (vielleicht haben Sie bereits das Repo aktualisiert)? Wenn Sie sich auf den 'isInLobby(). Dann (... countPlayer(). Dann ...' -Teil beziehen, ist die Lösung trivial: machen Sie einfach die Funktion, in der diese Aufrufe enthalten sind (das '(req, res) =>' one) "async" – Bergi