Существует ли максимальный предел задержки для 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, что вызывает переполнение.