Topic: SetTimeOut и SetInterval, что лучше использовать в JavaScript?
Для многократного запуска кода через равные промежутки времени предназначена функция setInterval. Тем не менее она обладает рядом минусов, в основном это разное поведение в различных браузерах.
Первое отличие состоит в разности момента установки таймера для следующего запуска. Создадим небольшой тест: будем отмерять количество времени, прошедшее с начала выполнения предыдущего запуска и с его окончания.
var d1 = new Date(), d2 = new Date();
setInterval(function() {
var d = new Date();
document.body.innerHTML += (d - d1) + ' ' + (d - d2) + '<br>';
// Ставим метку в начале функции
d1 = new Date();
while (new Date() - d1 < 200); // ничего не делаем 200 миллисекунд
// И в конце функции
d2 = new Date();
}, 1000);
Вывод будет информативным, начиная со второй строчки.
В Firefox, Opera, Safari и Chrome ситуация будет схожая: первое число будет примерно равно 1000, второе — на 200 меньше. Различие будут только в разбросе значений. Самый маленький разброс в Chrome и Opera.