Существует ли максимальный предел задержки для window.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, а
Ответы
Ответ 1
В соответствии с документацией setTimeout
в общедоступном wiki MDN действительно существует максимум, хотя он не кажется "официальным" - ограничение является подписанным 32-битное целое.
Максимальное значение задержки
Браузеры, включая Internet Explorer, Chrome, Safari и Firefox хранить задержку как 32-разрядное целое число со знаком. Это вызывает целочисленное переполнение при использовании задержек, превышающих 2147483647, в результате в тайм-ауте, выполняемом немедленно.
Значение 2592000000
действительно больше, чем 2147483647
, что вызывает переполнение.