今天我遇到了window.setInterval的一个有趣问题。当使用足够大的延迟(在这种情况下是30天内的毫秒数)时,它每秒执行一次而不是每30天执行一次。在最新的Chrome和Firefox中测试过。
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参数是否具有最大值以及它是什么?
答案 0 :(得分:8)
根据setTimeout
documentation on the public wiki MDN确实存在最大值,虽然看起来并不“正式” - 但限制是带符号的32位整数。
最大延迟值
浏览器包括Internet Explorer,Chrome,Safari和Firefox 在内部将延迟存储为32位有符号整数。这导致了 结果使用大于2147483647的延迟时出现整数溢出 在超时中立即执行。
2592000000
的值确实大于2147483647
,从而导致溢出。