javascript - 为什么 setInterval() 在此代码中停止得太早?

标签 javascript setinterval

<div class="wait">Wait</div>
<div class="waitDownloadLink"></div>

$(document).ready(function()
                  {
                      var secondNormal = 40;
                      var refreshIntervalId;
                      refreshIntervalId = setInterval(function() {
                          secondNormal -= 1;
                          $(".wait").text(secondNormal);

                      }, 1000); 
                      setTimeout(function() {
                          clearInterval(refreshIntervalId);
                          $(".waitDownloadLink").text("Click me to download");
                      }, secondNormal * 1000);




                  });

当我开始运行代码并停留在网页上时,代码似乎运行得非常完美(或接近)。然而,当我启动代码后立即浏览其他网页时,计时器卡在 12 - 18 秒之间,然后停止运行。为什么会出现这种情况?有什么办法可以解决这个问题吗?

https://jsfiddle.net/s1zf18co/

最佳答案

浏览器通常会暂停或降低在不可见选项卡中运行的 Javascript 的线程优先级。我的猜测是,这是笔记本电脑和其他设备的一种节能措施,但多年来他们都这样做了。 This question对这个问题进行了极其彻底的调查。

解决方案是使用不会暂停的网络工作人员。请参阅the Mozilla documentation了解更多信息。

关于javascript - 为什么 setInterval() 在此代码中停止得太早?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29810342/

相关文章:

javascript - 将 onclick 函数添加到 riotjs 元素内的输入标签

javascript - 样式化 iframe 内容

javascript - 带进度条的 slider 上的 Jquery setInterval

Javascript/jQuery - 重复检查 5 次迭代并在满足条件时运行另一个函数

javascript - nodejs中的setInterval

javascript - 如何在node.js中使用slack api方法

javascript - html5拖放 - 拖动文本的单个字符 - 可以看到光标中的字符与图像一起使用吗?

javascript - 如何使用jquery获取所有css属性

Javascript函数clearInterval不停止动画

JavaScript - setInterval 函数 : interval won't clear