当前位置: 首页 > 面试题库 >

setInterval会漂移吗?

秦晋
2023-03-14
问题内容

这确实是一个非常简单的问题。如果我使用setInterval(something, 1000),是否可以完全确定在31天后会触发“某事”的确切60*60*24*31时间?还是有所谓的漂移风险?


问题答案:

您可以在Firefox中运行以下基准测试:

var start = +new Date();
var count = 0;
setInterval(function () {
    console.log((new Date() - start) % 1000,
    ++count,
    Math.round((new Date() - start)/1000))
}, 1000);

第一个值应尽可能接近0或1000(其他任何值都表明触发器的计时是“偏离原点”。)第二个值是代码被触发的次数,第三个值是多少次被触发可能 应该
触发了。您会注意到,如果您占用CPU的话,它可能会脱节,但似乎可以自行纠正。尝试将其运行更长的时间,并查看其处理方式。



 类似资料:
  • 我们使用helm来管理我们在一个k8s集群中的所有资源。最近我们遇到了一个事件,一些k8s资源在helm之外被修改了(关于根本原因的详细信息见下文)。 然而,最终的结果是,我们的集群中有一些k8s资源与版本的helm图表中指定的不匹配。 示例: 与图表不匹配: 我怀疑k8s资源中的漂移不止这一次。 如何验证哪些资源已漂移? 我如何通知helm,以便下一个部署在应用发布差异时将其考虑进去?

  • 问题内容: 我想停止处理程序中的此间隔重复运行。那有可能吗? 问题答案: 您需要在点击处理程序范围内将的返回值设置为变量,然后像这样使用:

  • 问题内容: 当我使用ajax从数据库中检索数据时,如果我从数据库中检索到的数据等于saveHere,则会出现此问题,它将再次循环直到与变量saveHere不匹配,它将冻结浏览器直到数据我检索到的结果不等于saveHere。 这是一个例子: 我真的需要建议。先感谢您。对不起,语法。 问题答案: 我不知道确切的情况或要实现的目标,但是我说您进行AJAX调用的方式非常危险,因为它有可能每秒不断地发出请求

  • 由于 JavaScript 是异步的,可以使用 setTimeout 和 setInterval 来计划执行函数。 注意: 定时处理不是 ECMAScript 的标准,它们在 DOM (文档对象模型) 被实现。 function foo() {} var id = setTimeout(foo, 1000); // 返回一个大于零的数字 当 setTimeout 被调用时,它会返回一个 ID 标

  • 问题内容: 有一种方法可以配置javascript方法以立即执行该方法,然后使用计时器执行 问题答案: 第一次直接直接调用函数是最简单的: 但是,有充分的理由要避免-尤其是在某些情况下,整个事件负荷可以彼此紧接着立即到达而没有任何延迟。另一个原因是,如果要停止循环,则必须显式调用,这意味着必须记住原始调用返回的句柄。 因此,另一种方法是使用以下方法触发自己的后续调用: 这样可以确保两次调用之间 至

  • 问题内容: 据我所知,这两段JavaScript的行为方式相同: 选项A: 选项B: 使用setTimeout和setInterval之间有什么区别? 问题答案: 他们本质上试图做同样的事情,但是这种方法比该方法更加准确,因为要等待1000ms,然后运行该函数,然后设置另一个超时。因此,等待时间实际上超过了1000毫秒(如果函数执行时间较长,则等待时间会更长)。 尽管有人可能会认为将执行完全相同每