我有一个简单的倒计时脚本(jsFiddle)。

var time = 60;
function countDown(timeLeft){
     $("#timeLeft").text(timeLeft);
    if(timeLeft!=0){
        setTimeout(function(){ countDown(--timeLeft); }, 1000);
    }
}
countDown(time);


由于某种原因,如果我在Chrome中运行它并专注于其他选项卡,则计时器会比应有的速度慢两倍...因此,当我同时在手机上运行独立计时器时,计时器正常运行用我的计时器将焦点移回到选项卡,它显示还剩约30秒。当包含脚本的选项卡处于焦点位置时,它工作得很好,只有在后台打开时,它的运行速度才特别慢。在Firefox中不会发生这种情况。是某种奇怪的错误还是我做错了什么?

最佳答案

问题是您设置了太多setTimeout函数,时间= 60,有60个setTimeouts,因此它们会损害您的性能。您可以改用setInterval:

function countDown(timeLeft){
 var intervalProc = setInterval(function(){
  $("#timeLeft").text(timeLeft);
  timeLeft--;
  if(timeLeft <= 0){
   clearInterval(intervalProc);
  }
 })

}

关于javascript - Chrome setTimeout()计时问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17627442/

10-09 17:52