等待回调导致程序退出

时间:2019-06-19 00:09:52

标签: node.js callback

使用“提示”和“说”编写简单的Node.js CLI文本转语音应用程序。 如何在显示新的提示行之前让提示等待语音结束?

我将chat()移到了回调之外(请参阅末尾的注释代码),但这会导致提示提早出现(正常行为)。

我希望语音结束后会返回提示,因为一旦say.speak回调运行后,chat()就会重新启动。

该程序在说完之后立即退出,没有显示新提示。

const prompt = require('prompt')
const say = require('say')

chat()

function chat() {
  prompt.get(['chat'], (error, result)=> {
    if(error) return console.log('prompt <ERROR>: '+error.message)
    if (result.chat === 'exit') {
        terminate_self()
    } else if (result.chat == '') {
      say.speak('No input received.', '', '', ()=> {
        chat() // program terminates once speech is complete
      })
    } else {
      // process input here
      say.speak(result.chat, '', '', ()=> {
        chat() // program terminates once speech is complete
      })
    }
    // chat() // program stays alive, BUT prompt returns before speech is completed
  })
}

current result:
user@homeserver:~/Nodejs/ttschat$ node bin.js
chat |  hey
user@homeserver:~/Nodejs/ttschat$

desired result:
user@homeserver:~/Nodejs/ttschat$ node bin.js
chat |  hey
chat |  hey
chat |  exit
user@homeserver:~/Nodejs/ttschat$

1 个答案:

答案 0 :(得分:0)

不确定的本地问题。

我删除了项目文件夹,创建了相同的文件夹,安装了npm并提示并提示,并粘贴了与以前完全相同的代码,并且现在可以正常使用了。

非常感谢dun32确认问题不在代码本身内!