2017-08-22 130 views
0

我想在下面的代码中使用async/await。JS调用嵌套的异步函数

if/else部分,它验证正确,但嵌套函数不会被调用。

该代码仅在if/else完成后停止。

难道有人会对此发光吗?谢谢。异步功能

if (q1.value === 'yes') { 
     await askQuestion() 
    } else { 
     await endConvo() 
    } 

因为askQuestion()和endConvo()是异步的功能,在程序退出之前

async function initBot() { 

    await botui.message.bot({ 
    content: `Do you have any questions?` 
    }) 

    let q1 = await botui.action.button({ 
    action: [{ 
     text: 'Yes', 
     value: 'yes' 
    }, { 
     text: 'No', 
     value: 'no' 
    }] 
    }) 

    // This is where it's stuck 

    if (q1.value === 'yes') { 
     askQuestion() 
    } else { 
     endConvo() 
    } 

    let endConvo = async() => { 
    await botui.message.bot({ 
     content: `END` 
    }) 
    } 

    let askQuestion = async() => { 
    await botui.message.bot({ 
     content: `What's your questions?` 
    }) 
    } 
} 

export default initBot 

回答

0

尝试等待,而不必等待他们完成

+0

对我不起作用 – shawnl

+0

函数未被调用? – marvel308

0

啊啊呀。

它在if/else使用它之前宣布这些功能endConvoaskQuestion的只是如此。

使用ESlint给了我这个线索。