在这里,变量计时器在timerIncrement函数外部声明。由于变量范围的原因,我知道在函数内部更改值不会在外部更改它。但是,我确实需要提出这样的建议,以便idleTime > 5使用新的计时器。

我该如何实现?

jQuery(document).ready(function($) {

   var timer = 1000;
  //   //increment the idle time counter every sec.
  var idleInterval = setInterval(timerIncrement, timer); // 1 sec


    function timerIncrement() {
      while(idleTime < 5){
        console.log('test '+idleTime);
        idleTime = idleTime + 1;
         }
         timer = 2000;//how to make this take affect on the top so that setInterval run at this newly set timer
         console.log('reached max');

    }

}

最佳答案

由于间隔是在首次调用setInterval时设置的。修改delay的值将无效。

在这种情况下,您应该使用setTimeout

$(document).ready(function() {
    var timer = 1000;
    var idleInterval = setTimeout(timerIncrement, timer); // 1 sec

    function timerIncrement() {
        timer = 2000
        //Recursively call your method
        idleInterval = setTimeout(timerIncrement, timer);
    }
});

07-24 09:45