从另一个函数中调用一个时钟函数会加速时钟

时间:2017-05-04 18:04:09

标签: javascript

我有三个函数:第一个是setTimeout在内的时钟,第二个是当时钟到达零时调用的函数,其中setInterval在内,第三个是当第二个的setInterval被清除并调用另一个时调用的函数清除时间间隔再次呼叫时钟。功能链起作用但很快加速了时钟,我不知道为什么。

    var secs=8;
    function clock(){
       secs--;
       var timer=setTimeout(clock,1000);
       document.getElementById('clock').innerHTML = 'Clock: ' + secs;
       if(secs==0){
               clearTimeout(timer);
               noEvent();
             }
       }

    function noEvent(){
            var count=10;
            var timer1=setInterval(function(){
                    // do something
            count--;

            if(count==0){
              clearInterval(timer1);
              repetition();
                  }
              },200)
     }

    function repetition(){
           var count=3;
           var timer2=setInterval(function(){
                    // do something
           count--;

           if(count==0){
                   clearInterval(timer2);
                   secs=8;
                   clock();
                       }
           },1000)
    }


  var index=0;
  $("myId").click(function(){
     var rand=this.id;
     var check=(arrComputer[index]==rand); // arrComputer is an array 
                                          // generated by the computer
                                          // by other function

     if(check==true) {
            // do something
            clock();
                }     

  }

函数和调用有效,但设置为1秒的时钟(setTimeout(时钟,1000))在第一次调用中会变为1秒,但是连续变得更快,所以变量secs变为8,7 ,6,5,...,0但速度更快:8到7之间不是1000毫秒,但可能是200毫秒。

0 个答案:

没有答案