功能不会等到一切都执行后再继续

时间:2016-04-02 23:33:28

标签: javascript function cordova phonegap-build chatbot

我正在建立一个聊天机器人。我有如下功能:

function Smoking(){
   var userinput=document.getElementById("messages").value                   
   window.iSpeech.speak(speakPluginResultHandler,nativePluginErrorHandler,"Do you smoke?");
   if (userinput=="Yes"){                               
   window.iSpeech.speak(speakPluginResultHandler,nativePluginErrorHandler,"Oh no! Smoking is not good for your health!");
}else if(userinput=="No"){                                
   window.iSpeech.speak(speakPluginResultHandler,nativePluginErrorHandler,"Good to hear that you are not smoking!");
 }
}

当用户要求聊天机器人提出问题时,会调用Smoking()函数:

var convpatterns = [
[".*hi.*", "Hello there!","Greetings!"],
[".*ask me.*", Smoking],
["Yes","You seem quite sure.","OK, but can you elaborate a bit?"]

window.iSpeech.speak插件允许系统说出单词并且插件已正确安装并可用于其他功能。但是,当调用Smoking()函数时,系统只会说“你吸烟吗?”,而不是等待用户输入。当用户在文本框中键入“是”或“否”时,系统会继续并将输入文本识别为“是”数组,而不是吸烟()功能中的“是”。因此,如果用户输入“是”,聊天机器人会说“你似乎很确定”,而不是“哦不!吸烟对你的健康不利!”

所以我只是想知道是否有一种方法让函数等到所有行都执行后再继续?

更新

我已经尝试将它们分成两个独立的功能,但它仍然无效:

function Smoking(){                 
window.iSpeech.speak(speakPluginResultHandler,nativePluginErrorHandler,"Do you smoke?");
SmokingAnswer()
}

function SmokingAnswer(){
var userinput=document.getElementById("messages").value
if (userinput=="Yes"){                             
window.iSpeech.speak(speakPluginResultHandler,nativePluginErrorHandler,"Oh no! Smoking is not good for your health!");
}else if(userinput=="No"){                                
window.iSpeech.speak(speakPluginResultHandler,nativePluginErrorHandler,"Good to hear that you are not smoking!");
}
}

不执行SmokingAnswer()功能。

1 个答案:

答案 0 :(得分:0)

我理解的方式是,您想通过语音向用户提问,用户应该在聊天框中回复。

为了使您的应用程序以正确的方式工作,您应该将其分成多个JS函数。 当用户进入站点或聚焦聊天框时,将调用第一个函数。这个函数会问这个问题。

然后用户输入内容,并在用户单击按钮后让第二个功能运行。然后,第二个函数将检查输入并评估可能的答案。 “哦,上帝不......”/“很高兴听到......”

你的功能设计方式是这样的:一旦它运行它就会提出问题,但它需要聊天盒中已有的答案,因为你还没有问过用户,所以当时很可能是空的。