首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript-等待函数完成后再继续

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

Stack Overflow用户
提问于 2016-02-24 07:54:29
回答 1查看 269关注 0票数 2

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

代码语言:javascript
复制
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 types“,它会将用户定向到Question1()函数。如果用户输入“我需要一个朋友”,聊天机器人会问“你为什么需要一个朋友?”或者“你确定你需要一个朋友吗?”

代码语言:javascript
复制
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!");
  }
}

window.ispeech.speak将允许聊天机器人口头说出这些话。

因此,当聊天机器人问“你吸烟吗?”,并且用户在文本框中键入"yes“或"no”时,聊天机器人就会根据回答做出响应。

我想要的是让Question1()函数在聊天机器人开始询问其他事情之前完成运行(因此它等待用户键入"yes“或"no”,然后函数才能完成并开始新的脚本),因为我不希望用户的响应与数组中提供的其他脚本冲突(例如,文本框的输入"yes“可能与脚本中的另一个"Yes”数组冲突)。

EN

回答 1

Stack Overflow用户

发布于 2016-02-24 08:01:41

您实际上需要像状态机这样的东西。但是总是可以在一个变量中保存当前的命令。然后,您总是检查命令是否已完成。只要当前命令未设置为null(表示没有当前命令),您就不能侦听其他命令。每个命令都应该至少有一个最终状态。它可以是将由用户输入的值。当满足当前命令的最终状态条件时,可以将其设置为null。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35590669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档