ฉันพยายามเชื่อมโยงฟังก์ชัน 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
เรียกว่าที่ไหน / อย่างไร