İki eşzamansız işlevi birbirine zincirleme girişiminde bulundum çünkü birincisi, ya koşuya neden olan koşullu bir dönüş parametresine sahipti ya da modülden çıktı. Ancak, özelliklerde bulamadığım tuhaf davranışlar buldum.Bir eşzamanlama işlevinin dışında beklemede bekletme
async function isInLobby() {
//promise.all([chained methods here])
let exit = false;
if (someCondition) exit = true;
}
Bu benim kod bastardized snippet'tir bir oyuncu zaten lobide eğer, ama bu alakasız eğer basitçe kontrol ettiğinden, (tam kapsamını here görebilir).
Sonraki bu uyumsuzluğa sahibiz.
async function countPlayer() {
const keyLength = await scardAsync(game);
return keyLength;
}
Bu fonksiyon exit === true
eğer çalıştırmak için gerekli değildir. ancak belirli bilgileri içeren bir TypeError aldı
const inLobby = await isInLobby();
Ben sonuçlarına bekliyor ümit Bu yapmaya çalıştım, bu yüzden koşullu countPlayer
çalıştırmak için inLobby
kullanabilirsiniz.
Neden async
işlevinin kapsamı dışında işlev göremiyorsunuz? Bunun bir şeker sözü olduğunu biliyorum, bu yüzden then
'a zincirlenmiş olmalı ama neden countPlayer
'da başka bir söz bekleyebilirim ama dışarıda await
isInLobby
?
Bize gösterebilir misiniz * nerede * yaptıysanız, isInLobby() 'yi, ve inLobby'yi nasıl kullanırsınız? Ayrıca, "countPlayer" nerede/nasıl aranır? – Bergi
@Bergi Gerçek bağlam için repo'yu bağladım. –
sorusuna koymak için çok fazla kod sorunun nerede olduğunu göremiyorum (belki de repo'yu zaten güncellediniz)? Eğer isInLobby() 'ye başvurursanız o zaman (… countPlayer(). Sonra… 'parçası, çözüm önemsizdir: sadece bu çağrıların içerdiği fonksiyonu yapın (' (req, res) => 'one) "async". – Bergi