ฉันพยายามเชื่อมโยงฟังก์ชัน async สองฟังก์ชันเข้าด้วยกันเนื่องจากฟังก์ชันแรกมีพารามิเตอร์ส่งคืนตามเงื่อนไขที่ทำให้วินาทีทำงานหรือออกจากโมดูล อย่างไรก็ตามฉันพบพฤติกรรมแปลก ๆ ที่ไม่พบในข้อกำหนด
async function isInLobby() {
//promise.all([chained methods here])
let exit = false;
if (someCondition) exit = true;
}
นี่คือตัวอย่างโค้ดของฉันที่ถูกทำลาย (คุณสามารถดูขอบเขตทั้งหมดได้ที่นี่ ) ซึ่งจะตรวจสอบว่าผู้เล่นอยู่ในล็อบบี้แล้วหรือไม่ แต่ไม่เกี่ยวข้อง
ต่อไปเรามีฟังก์ชัน async นี้
async function countPlayer() {
const keyLength = await scardAsync(game);
return keyLength;
}
exit === trueฟังก์ชั่นนี้ไม่จำเป็นต้องให้ทำงานถ้า
ฉันพยายามที่จะทำ
const inLobby = await isInLobby();
สิ่งนี้ฉันหวังว่าจะรอผลลัพธ์ดังนั้นฉันจึงสามารถใช้inLobbyเพื่อเรียกใช้แบบมีเงื่อนไขได้countPlayerอย่างไรก็ตามฉันได้รับ typeerror โดยไม่มีรายละเอียดเฉพาะ
เหตุใดคุณจึงไม่สามารถawaitใช้asyncฟังก์ชันที่อยู่นอกขอบเขตของฟังก์ชันได้ ฉันรู้ว่ามันสัญญาน้ำตาลดังนั้นจึงต้องถูกล่ามโซ่thenแต่ทำไมมันที่อยู่ในcountPlayerที่ฉันจะรอสัญญาอื่น แต่ข้างนอกฉันไม่สามารถawait isInLobby?
await isInLobby()และinLobbyใช้อย่างไรcountPlayerเรียกว่าที่ไหน / อย่างไร