繁体   English   中英

javascript-等到功能完成再继续

[英]javascript- Wait till function finish before continuing

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

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")
);

因此,基本上,如果用户键入“问我一个问题”,它将把用户定向到Question1()函数。 如果用户键入“我需要一个朋友”,则聊天机器人将通过询问“为什么需要一个朋友?”来答复。 或“您确定需要朋友吗?”。

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将允许聊天机器人口头说出单词。

因此,当聊天机器人问“您抽烟吗?”问题,并且用户在文本框中键入“是”或“否”时,聊天机器人便会基于回复进行响应。

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

您实际上需要像状态机之类的东西。 但始终可以将当前-let的say-命令保存在变量中。 然后,您始终检查命令是否完成。 只要当前命令未设置为null(意味着没有当前命令),您就无法收听其他命令。 你们每个命令都应至少具有一个最终状态。 它可以是用户输入的值。 当满足当前命令的最终状态条件时,可以将其设置为null。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM