等待回调导致程序退出

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (17)

使用'prompt'和'say'编写简单的Node.js CLI文本转语音应用程序。在显示新的提示行之前,如何提示等待语音完成?

我将chat()移到了回调之外(最后看到注释后的代码),但这会导致提示出现得很早(正常行为)。

我预计语音完成后会提示返回,因为一旦say.speak回调运行,就会重新启动chat()。

该程序在say.speak完成后立即退出,不显示新提示。

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$
提问于
用户回答回答于

我删除了项目文件夹,创建了相同的文件夹,npm安装了say和提示符,并粘贴了与以前完全相同的代码,现在它按预期工作。

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

扫码关注云+社区

领取腾讯云代金券