Próbowałem połączyć ze sobą dwie funkcje asynchroniczne, ponieważ pierwsza miała warunkowy parametr zwrotny, który powodował, że druga albo uruchamiała, albo wychodziła z modułu. Jednak zauważyłem dziwne zachowanie, którego nie mogę znaleźć w specyfikacjach.
async function isInLobby() {
//promise.all([chained methods here])
let exit = false;
if (someCondition) exit = true;
}
To jest zdegradowany fragment mojego kodu (możesz zobaczyć pełny zakres tutaj ), który po prostu sprawdza, czy gracz jest już w lobby, ale to nie ma znaczenia.
Następnie mamy tę funkcję asynchroniczną.
async function countPlayer() {
const keyLength = await scardAsync(game);
return keyLength;
}
Ta funkcja nie musi być uruchamiana, jeśli exit === true.
Próbowałem to zrobić
const inLobby = await isInLobby();
Miałem nadzieję, że będzie to czekało na wyniki, więc mogę użyć inLobbydo uruchomienia warunkowego countPlayer, jednak otrzymałem błąd typu bez konkretnych szczegółów.
Dlaczego nie możesz poza funkcją zakresu funkcji? Wiem, że to obietnica cukru, więc musi być przykuta, ale dlaczego w środku mogę czekać na kolejną obietnicę, ale na zewnątrz nie mogę ?awaitasyncthencountPlayerawait isInLobby
await isInLobby()i jakinLobbyjest używany? Poza tym, gdzie / jak sięcountPlayernazywa?