Chrome setTimeout()计时问题

时间:2013-07-13 05:59:38

标签: javascript google-chrome settimeout timing

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

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

出于某种原因,如果我在Chrome中运行它并专注于另一个标签,那么计时器的速度应该比它应该慢两倍......所以当我在手机上同时运行一个独立的计时器时它会正常运行当我用我的计时器重新回到标签时,它显示约30秒。当包含脚本的选项卡处于焦点时它可以正常工作,只有当它在后台打开时它才会变得非常慢。它不会发生在Firefox中。这是一种奇怪的错误还是我做错了什么?

1 个答案:

答案 0 :(得分:1)

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

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

}