Я пытаюсь создать функцию распознавания речи с помощью WebKit Speech API, которая записывает ввод пользователя три раза. Я использую цикл for, чтобы выполнить итерацию три раза, и в моем цикле for я утешаю некоторые вещи, запускаю распознавание и останавливаю распознавание. Однако в итоге происходит то, что оператор console.log печатается 3 раза мгновенно, и на самом деле ничего не записывается. Что я делаю не так?
Я попытался сделать мою текущую функцию чисто функцией распознавания речи и иметь другую функцию, которая использовала 3 итерации цикла for для ее вызова три раза. Однако произошло то, что все операторы console.log в цикле for были выполнены еще до того, как была вызвана функция записи, и запись произошла.
РЕДАКТИРОВАТЬ: я пытался использовать обратные вызовы, и вот как выглядят мои функции. Тем не менее, функция записи, проверьте, даже ничего не делает после того, как она вызывается в первый раз. Почему это так?
var word = "fat";
function processor(i, func2, answer){
if(word[i] == answer && i == 2){
console.log('Done');
}
else if(word[i] == answer){
console.log('Continue')
func2(i+1, processor)
}
else{
console.log('Not yet')
func2(i, processor)
}
}
function check(i, func){
var recognizer = new webkitSpeechRecognition();
// Start producing results before the person has finished speaking
recognizer.interimResults = false;
// Set the language of the recognizer
recognizer.lang = 'en-US';
recognizer.onresult = function(event) { //this is the function that is lagging
console.log('It works')
var res = event.results[0][0].transcript
console.log('You said: ', res);
func(i, check, res);
};
recognizer.start();
console.log('Ready to hear the answer');
}
function begin(){
responsiveVoice.speak("Welcome to Bitreed. When you see a letter being highlighted, please say that letter");
document.getElementById("new").innerHTML = word;
setTimeout(function() { check(0, processor);}, 7000);
}
Спасибо !!