如何使用while循环进行输入,以便每隔x秒丢弃一次旧输入?

时间:2015-04-26 23:50:26

标签: javascript

我正在编写一个应用程序,它必须接收某个频率范围的音频输入并增加计数器变量,直到浏览器开始接收输入后的时钟滴答x秒。我已经完成了大部分工作,但问题是输入循环。例如,如果我想采用10级或更高的频率级别,并编写以下代码

    if (f>10) {
      var count=0;
      count++;
    }

代码只增加一次计数。但是我希望根据声音直到x秒增加它。如果我使用while循环,脚本会停止响应。

1 个答案:

答案 0 :(得分:0)

while循环是同步的。您需要使用异步循环。你有两个选择:

  1. 使用setTimeout并将while循环放入其中并在完成后使用回调
  2. 使用setInterval。
  3. 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
    });