Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript-等待函数完成后再继续_Javascript_Cordova_Phonegap Build_Chatbot - Fatal编程技术网

javascript-等待函数完成后再继续

javascript-等待函数完成后再继续,javascript,cordova,phonegap-build,chatbot,Javascript,Cordova,Phonegap Build,Chatbot,我正在建造一个聊天机器人。聊天脚本的一些示例如下所示: var convpatterns = new Array ( new Array (".*ask me a question*", Question1), new Array ("I need (.*)" , "Why do you need $1?" , "Are you sure you need $1?"), new Array (".*sorry.*", "Please dont apologise", "Apologi

我正在建造一个聊天机器人。聊天脚本的一些示例如下所示:

var convpatterns = new Array (
  new Array (".*ask me a question*", Question1),
  new Array ("I need (.*)" , "Why do you need $1?" , "Are you sure you need $1?"),
  new Array (".*sorry.*", "Please dont apologise", "Apologies are not necessary", "it is ok, it didn't bother me")
);
因此,基本上,如果用户键入“ask me a question”,它将引导用户使用
Question1()
函数。如果用户输入“我需要一个朋友”,聊天机器人会回答“你为什么需要一个朋友?”或“你确定你需要一个朋友吗?”

窗口.ispeech.speak
将允许聊天机器人口头说出这些单词

因此,当聊天机器人问问题“你吸烟吗?”,用户在文本框中键入“是”或“否”时,聊天机器人会根据回答做出响应


我想让
Question1()(例如,文本框的输入“是”可能与脚本中的另一个“是”数组冲突)。

您实际上需要类似于状态机的东西。但可以始终将当前命令(比如)保存在变量中。然后,您始终检查命令是否完成。只要当前命令未设置为null(表示没有当前命令)您不能侦听其他命令。每个命令都应至少具有一个最终状态。它可以是用户将输入的值。当最终状态条件您可以将其设置为null。

我可以使用回调函数使其工作吗?因为我不熟悉状态机。保存当前命令变量(在服务器中通过回调访问它或在客户端)的位置无关紧要,这取决于您。
function Question1(){        
  var textbox=document.getElementById("messages").value;
  window.iSpeech.speak(speakPluginResultHandler,nativePluginErrorHandler,"Do you smoke?");

  if (textbox="Yes"){
    window.iSpeech.speak(speakPluginResultHandler,nativePluginErrorHandler,"Oh, do you know smoking is bad for your health?");
  } else if (textbox="No"){
    window.iSpeech.speak(speakPluginResultHandler,nativePluginErrorHandler,"That's great to hear that you don't smoke!");
  }
}