Я создаю чатбот. У меня есть функция, как показано ниже:Функция не ждет, пока все будет выполнено до перехода на
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!");
}
}
Курильщик() вызывается, когда пользователь попросить Chatbot задать вопрос:
var convpatterns = [
[".*hi.*", "Hello there!","Greetings!"],
[".*ask me.*", Smoking],
["Yes","You seem quite sure.","OK, but can you elaborate a bit?"]
Плагин window.iSpeech.speak позволяют системе говорить слова и плагин установлены правильно и работают в других функциях. Однако, когда вызывается функция курения(), система говорит только «курит?» И не ждет ввода пользователя. Когда пользователь вводит текстовое поле «Да» или «Нет», система переходит и распознает входной текст как «Да», а не «Да» в функции Курение(). Поэтому, если пользователь набрал «Да», чатбот скажет «Ты, кажется, совершенно уверен», вместо «О нет! Курение не подходит для твоего здоровья!»
Так что я просто задавался вопросом, есть ли способ, чтобы функция подождала, пока все линии будут выполнены, прежде чем двигаться дальше?
UPDATE
Я попытался положить их на две отдельные функции, но она по-прежнему не работает:
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() не выполняется.
Вы тестируете это в своем веб-браузере? – JesseMonroy650
@ Kerry Функция SmokingAnswer на самом деле выполнена, однако использовать ввод «", потому что пользователь не успел ответить. Запустите SmokingAnswer либо в форме ввода с событием onkeyup, либо нажатием кнопки, как я сказал в своем ответе – mhenkel