我正在尝试使用webKit语音API创建语音识别功能,该功能会记录三个不同时间的用户输入。我使用一个for循环来遍历这三遍,在我的for循环中,我console.log一些东西,开始识别,然后停止识别。但是,最终发生的情况是console.log语句立即被打印了3次,而实际上没有任何记录。我在做什么错了?
我试图使当前函数纯粹是语音识别函数,并且让另一个函数使用for循环的3次迭代将其调用3次。但是,发生的是,在for循环中的所有console.log语句都在调用记录功能之前就已经执行,并且记录发生了。
编辑:我尝试使用回调,这是我的函数外观。但是,录音功能(检查)在首次调用后什至不执行任何操作。为什么会这样?
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);
}
谢谢!