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ć inLobby
do 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ę ?await
async
then
countPlayer
await
isInLobby
await isInLobby()
i jakinLobby
jest używany? Poza tym, gdzie / jak sięcountPlayer
nazywa?