Несколько причин, по которым в JavaScript setInterval может не гарантировать выполнение функции через точно указанный промежуток времени:
- Исполнение функции занимает больше времени, чем задержка. maxello.gitbooks.io Например, если функция сложная, а задержка маленькая, или если она содержит операторы alert/confirm/prompt, которые блокируют поток выполнения. maxello.gitbooks.io В этом случае, если запуск функции невозможен, потому что браузер занят, она становится в очередь и выполнится, как только браузер освободится. maxello.gitbooks.io
- Слишком большая загрузка процессора. maxello.gitbooks.io При такой нагрузке JavaScript может не успевать обрабатывать таймеры вовремя, и некоторые запуски setInterval будут пропущены. maxello.gitbooks.io
- Неактивная вкладка. maxello.gitbooks.io Если вкладка не активна продолжительное время, современные браузеры замедляют или даже прекращают выполнение JavaScript, в этом случае работа setInterval может быть существенно замедлена или даже приостановлена. learnjs.ru
Таким образом, вызов setInterval не гарантирует реальной задержки между исполнениями, бывают случаи, когда реальная задержка больше или меньше заданной. maxello.gitbooks.io