JS调用嵌套的异步函数

时间:2017-08-22 09:50:49

标签: javascript async-await

我尝试在下面的代码中使用async / await。

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

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

有人可以对此有所启发吗?感谢。

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

2 个答案:

答案 0 :(得分:0)

在异步函数

之前尝试等待
if (q1.value === 'yes') {
      await askQuestion()
  } else {
      await endConvo()
  }

因为askQuestion()和endConvo()是异步函数,所以程序退出时无需等待它们完成

答案 1 :(得分:0)

啊,很幸福。

只是在endConvo中使用}之前声明这些函数askQuestionif/else 的情况。

使用ESlint给了我这个线索。