首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >setInterval的最大延迟是多少?

setInterval的最大延迟是多少?
EN

Stack Overflow用户
提问于 2012-09-28 12:03:50
回答 3查看 13.7K关注 0票数 24

我在Firefox 15和Chrome 21上遇到了问题,代码如下:

setInterval(function () { console.log('test') }, 300000000000)

在两种浏览器上,函数都是立即运行的,重复非常快。当然,这是一个很大的数字(代表大约10年后),但我不希望它被视为一个小数字或负数。我在任何文档中都没有看到允许的最大延迟。有没有人知道是否有一个标准的最大值,或者这只是浏览器的滑稽?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-28 12:14:40

目前我找不到任何文档,但如果计时器值必须适合32位有符号整数,我也不会感到惊讶。

票数 12
EN

Stack Overflow用户

发布于 2012-09-28 12:25:04

间隔存储在带符号的32位整数中(在测试的实现中: Google Chrome中的V8 ),所以您看到的行为是间隔溢出到负数的结果(在这种情况下,它的行为就像间隔是0一样)。因此,您可以使用的最大间隔是2**31 - 1

下面是我如何确定情况是这样的:

setInterval(function(){console.log("hi");}, Math.pow(2,31));

行为方式类似于间隔为0

setInterval(function(){console.log("hi");}, Math.pow(2,31) - 1);

在我愿意等待的时间里没有开火。

setInterval(function(){console.log("hi");}, Math.pow(2,33) + 1000);

行为方式类似于间隔为1000 (一秒)。这里,2**33不影响前32位,所以我们只得到1000

可能的最高间隔,2**31-1ms略低于25天,因此对于任何合理的事情来说都绰绰有余。

票数 26
EN

Stack Overflow用户

发布于 2022-01-25 13:42:48

将延迟参数转换为带符号的32位整数。这有效地将延迟限制在2147483647毫秒,因为它在IDL中被指定为有符号整数。

它在documentation中提到过

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12633405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档