window.setInterval

时间:2016-08-17 22:12:47

标签: javascript setinterval

今天我遇到了window.setInterval的一个有趣问题。当使用足够大的延迟(在这种情况下是30天内的毫秒数)时,它每秒执行一次而不是每30天执行一次。在最新的Chrome和Firefox中测试过。

jsFiddle link

window.setInterval(function() {
    document.getElementById("first").innerHTML = new Date().toString();
}, 5000);
window.setInterval(function() {
    document.getElementById("second").innerHTML = new Date().toString();
}, 2592000000);

我在setInterval中找不到关于延迟最大值的任何权威文档,MDN documentation没有提到任何内容。其他在线资料表明,延迟应该能够容纳任何带符号的32位整数。

window.setInterval中的delay参数是否具有最大值以及它是什么?

1 个答案:

答案 0 :(得分:8)

根据setTimeout documentation on the public wiki MDN确实存在最大值,虽然看起来并不“正式” - 但限制是带符号的32位整数。

  

最大延迟值

     

浏览器包括Internet Explorer,Chrome,Safari和Firefox   在内部将延迟存储为32位有符号整数。这导致了   结果使用大于2147483647的延迟时出现整数溢出   在超时中立即执行。

2592000000的值确实大于2147483647,从而导致溢出。