页面最小化/离开后的Javascript setInterval "catches up"

标签 javascript setinterval

我有一个非常正常的 setInterval 调用(我认为):

var myInterval = setInterval("myFunction('passVar1', 'passedVar2')", 8000);

如果我在页面上,它会完美运行,但如果我让页面打开一段时间(或最小化它?),当我回来时,就像它只是将所有 myFunction 调用构建到一个队列中并尝试真正快速地通过它们以“ catch ”。然后,当它追上来时,它会再次以 8 秒的间隔运行。

我做错了吗?我目前正在使用 Firefox 5——如果这与它有关的话。想法? TIA。

最佳答案

一方面,修复您的 setInterval,使其不使用 eval:

var myInterval = setInterval(function(){
                     myFunction('passVar1', 'passedVar2')
                 }, 8000);

其次,这取决于浏览器的间隔做什么或不做什么。


更新:

根据下面的评论和这里的相关聊天讨论是一个使用 setTimeout 的 fiddle :
http://jsfiddle.net/maniator/VR7WE/


更新:

根据进一步讨论,原来是 jquery 的动画问题

以下 fiddle 仅在动画完成时运行超时:http://jsfiddle.net/maniator/c869Z/5/

关于页面最小化/离开后的Javascript setInterval "catches up",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6523238/

相关文章:

javascript - 通过选择器获取动态元素

javascript - 将鼠标悬停在元素上时如何在浏览器底部预览 URL

javascript - 如何处理不一致的 mobx-state-tree 快照?

javascript - 在 Svelte 中获取对组件根元素的引用

javascript - Typescript 中的 setInterval 和 setTimeout

javascript - JQuery .load with Setinveral,在刷新时它会重置某些功能并禁用它们

javascript - setInterval 在第二次调用后不会停止

javascript - 如何清除函数中的 setInterval

javascript - 使用 javascript 定期更新发布评论的时间

php - 调试 AJAX 到 PHP 调用的最佳方法是什么?