javascript - Chrome setTimeout() 计时问题

标签 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 中不会发生这种情况。这是某种奇怪的错误还是我做错了什么?

最佳答案

问题是你设置了太多的setTimeout函数,当time = 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/

相关文章:

javascript - 如何停止一个自调用的 setTimeout() 函数?

javascript - PHP jQuery HTML - 获取自定义 HTML 属性

javascript - 试验 DOM 函数

javascript - 在 Three.js 上渲染重型模型/网格

javascript - 在 Chrome 和 Safari 中使用 onafterprint

python - 尽管超时,urllib2.urlopen 将永远挂起

javascript - 为什么这段 Javascript 代码不写入网页?

javascript - 为什么我可以写一个像 "c = { get a(){} }"这样的对象?

c# - Selenium 和 ChromeDriver 偶尔会为 GET 请求返回错误的内容

node.js - node.js 中的 setTimeout 是如何实现的