我有一个网站,我正在使用 javscript 计时器来交换图像。
我是这样使用定时器的:
var myTimer = window.setTimeout(MyFunction, MyInterval);
function MyFunction
{
//do something
//recalll timer
}
现在,我遇到的问题不是间隔没有定期触发,因为我可以在我的应用程序中接受这一点,并且我理解为什么它会有所不同。
我遇到的问题是,计时器时不时地停止几秒钟然后恢复。
我要确定的是导致计时器随机暂停的主要原因是什么?
这是因为资源被转移到托管浏览器 PC 上的另一个进程,还是仅仅是使用 JavaScript 计时器的本性?
如果是后者,我应该做一个永恒的循环吗?我在其他地方阅读和实践过的所有地方都表明,无限循环将抢占所有资源,这比定时器随机暂停更邪恶。
当需要定期快速执行代码时,除了使用 javascript 计时器之外,还有其他选择吗?
谢谢
最佳答案
您在 MyFunction
中运行的代码需要一些时间来执行(取决于您在做什么)。当您记忆起该函数末尾的计时器时,间隔不完全是 MyInterval
,因为添加了代码执行时间。
如果您使用 setInterval()
而不是 setTimeout()
,则给定函数将恰好每 MyInterval
毫秒执行一次,而不是 (MyInterval + 执行时间)
毫秒。
要回答您的问题,随机暂停的发生是因为您的代码的执行时间。
关于javascript - 一个可靠的 Javascript 计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20453780/