Chrome setTimeout() 计时问题

Chrome setTimeout() timing issues

本文关键字:问题 setTimeout Chrome      更新时间:2023-09-26

我有一个简单的倒计时脚本(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 个 setTimeout,所以它们会损害你的性能。您可以改用 setInterval:

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