javascript - 一个可靠的 Javascript 计时器

标签 javascript

我有一个网站,我正在使用 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/

相关文章:

javascript - 如何读取以 "#key"键控的 json 对象的值?

javascript - mongodb mongoose find - 如何获取适用的字符串作为结果?

javascript - 需要帮助理解 Javascript 中的(词法)变量范围

javascript - CSS TranslateY 使幻灯片在父元素后面动画化

javascript - 异步库中 `root=...` 代码的用途是什么?

javascript - 提交表单并关闭 Fancybox,Javascript

javascript - 如何理解客户端的异步Meteor.call

javascript - TypeScript 接口(interface)没有按我的预期工作

javascript - 如何访问 ion-header-bar 中保存为指令的当前 View 的 Controller ?

javascript - 复选框只生效一次