我正在编写一个应用程序,它必须接收某个频率范围的音频输入并增加计数器变量,直到浏览器开始接收输入后的时钟滴答x秒。我已经完成了大部分工作,但问题是输入循环。例如,如果我想采用10级或更高的频率级别,并编写以下代码
if (f>10) {
var count=0;
count++;
}
代码只增加一次计数。但是我希望根据声音直到x秒增加它。如果我使用while循环,脚本会停止响应。
答案 0 :(得分:0)
while循环是同步的。您需要使用异步循环。你有两个选择:
var loop = function(f, callback){
setTimeout(function(){
var count=0;
while(f>10){
count++;
}
callback(count);
}, 0);
};
或
var loop = function(f, callback){
var count = 0;
var si = setInterval(function(){
count++
if(f<=10){
clearInterval(si);
callback(count);
}
}, 1000);
};
使用这些功能:
loop(frequencyVariable, function(count){
//callback has been called successfully and the loop has ended.
//do stuff here
});