Nog*_*ter 19 javascript setinterval
我使用以下代码在Firefox 15和Chrome 21上遇到问题:
setInterval(function () { console.log('test') }, 300000000000)
Run Code Online (Sandbox Code Playgroud)
在两个浏览器上,该功能立即运行重复非常快.当然,这是一个很大的数字(代表从现在开始大约10年),但我不认为它被视为微小或负数.我没有看到任何文档中允许的最大延迟.有谁知道是否有标准的最大值,或者这只是浏览器有趣吗?
Aar*_*our 23
间隔存储在带符号的32位int中(在测试的实现中:Google Chrome中的V8),因此您看到的行为是间隔溢出为负数的结果(在这种情况下,它的行为就像间隔是0).因此,您可以使用的最大间隔是2**31 - 1.
这就是我如何确定这种情况:
setInterval(function(){console.log("hi");}, Math.pow(2,31));
Run Code Online (Sandbox Code Playgroud)
行为就像间隔一样0.
setInterval(function(){console.log("hi");}, Math.pow(2,31) - 1);
Run Code Online (Sandbox Code Playgroud)
在我愿意等待的时候不开火.
setInterval(function(){console.log("hi");}, Math.pow(2,33) + 1000);
Run Code Online (Sandbox Code Playgroud)
行为就像间隔是1000(一秒).这里,2**33不影响前32位,所以我们得到1000.
最高可能的间隔,2**31-1ms有点害羞25天,所以绰绰有余.
我认为最大延迟是 2 31 -1 即 2,147,483,647ms。有符号 32 位整数的最大值(以毫秒为单位)。如果未签名,则为 2 32 -1 = 4,294,967,295。
| 归档时间: |
|
| 查看次数: |
9783 次 |
| 最近记录: |