İki eşzamansız işlevi birbirine zincirlemeye çalışıyordum, çünkü ilki, ikincisinin çalışmasına veya modülden çıkmasına neden olan bir koşullu dönüş parametresine sahipti. Ancak, özelliklerde bulamadığım garip davranışlar buldum.
async function isInLobby() {
//promise.all([chained methods here])
let exit = false;
if (someCondition) exit = true;
}
Bu kodumun alçakça bir pasajıdır (tam kapsamı burada görebilirsiniz ), bir oyuncunun zaten lobide olup olmadığını kontrol eder, ancak bu alakasızdır.
Daha sonra bu asenkron fonksiyonumuz var.
async function countPlayer() {
const keyLength = await scardAsync(game);
return keyLength;
}
Bu işlevin çalıştırılmasına gerek yoktur exit === true.
Yapmaya çalıştım
const inLobby = await isInLobby();
Bunun sonuçları beklemesini umduğum için kullanabilirim inLobby koşullu olarak çalıştırabilirim countPlayer, ancak belirli bir ayrıntı içermeyen bir tür hatası aldım.
Neden işlevin kapsamı dışında awaitbir asyncişlev yapamıyorsunuz ? Bunun şeker sözü olduğunu biliyorum, bu yüzden zincirlenmesi gerekiyor thenama neden countPlayerbaşka bir sözü bekleyebilirim ama dışarıda yapamıyorum await isInLobby?
await isInLobby()ve nasılinLobbykullanıldığını gösterebilir misiniz ? Ayrıca nereye / nasılcountPlayerdenir?