के बाहर प्रतीक्षा का उपयोग करके मैं दो एसिंक फ़ंक्शंस को एक साथ श्रृंखला का प्रयास करने का प्रयास कर रहा था, क्योंकि पहले में एक सशर्त वापसी पैरामीटर था जो दूसरे को चलाने के लिए या मॉड्यूल से बाहर निकलने का कारण बना था। हालांकि, मुझे अजीब व्यवहार मिला है जो मुझे चश्मे में नहीं मिल रहा है।एसिंक फ़ंक्शन
async function isInLobby() {
//promise.all([chained methods here])
let exit = false;
if (someCondition) exit = true;
}
यह मेरा कोड का एक टुकड़ा bastardized है (यदि आप संपूर्ण संभावना here देख सकते हैं), कि बस की जाँच करता है, तो अगर पहले से ही एक लॉबी में एक खिलाड़ी है, लेकिन यह अप्रासंगिक है।
अगला हमारे पास यह async फ़ंक्शन है।
async function countPlayer() {
const keyLength = await scardAsync(game);
return keyLength;
}
इस समारोह अगर exit === true
चलाने की जरूरत नहीं है।
मैं
const inLobby = await isInLobby();
यह मैं आशा व्यक्त की परिणाम के लिए इंतजार करेंगे करने की कोशिश की, तो मैं inLobby
का उपयोग सशर्त countPlayer
चलाने के लिए कर सकते हैं, हालांकि मैं कोई विशिष्ट विवरण के साथ एक लेखन त्रुटि प्राप्त किया।
आप await
async
फ़ंक्शन के दायरे से बाहर क्यों काम नहीं कर सकते? मुझे पता है कि यह एक चीनी वादा है, इसलिए इसे then
पर जंजीर किया जाना चाहिए, लेकिन यह क्यों है कि countPlayer
में मैं एक और वादा का इंतजार कर सकता हूं, लेकिन बाहर, मैं await
isInLobby
नहीं कर सकता?
क्या आप हमें दिखा सकते हैं * कहां * आपने इंतजार किया है इनबॉक्स() ', और' इनबॉक्स 'का उपयोग कैसे किया जाता है? साथ ही, 'गिनप्लेयर' कहां/कैसे कहा जाता है? – Bergi
@ बर्गि मैंने वास्तविक संदर्भ के लिए अपने रेपो को जोड़ा। –
प्रश्न में डालने के लिए बहुत अधिक कोड मुझे नहीं पता कि समस्या कहां है (शायद आप पहले ही रेपो अपडेट कर चुके हैं)? यदि आप 'isInLobby() को संदर्भित करते हैं। (... countplayer()। फिर ... 'भाग, समाधान छोटा है: केवल उस फ़ंक्शन को बनाएं जिसमें वे कॉल निहित हैं (' (req, res) => 'one) 'async'। – Bergi