Почему начинает тормозить функционал на странице при использовании функции setInterval? Файл json должен считываться каждую секунду. (размер файла около 1Кб) Получение данных из файла json реализовано с помощью AJAX jQuery (функция GetCHANGE()) Через несколько минут после запуска страницы весь функционал на странице начинает тормозить и чем дальше, тем больше. Как можно решить эту проблему? Код:function timer(){ setInterval(function() { var autoPlay = setInterval( GetCHANGE(), 1000 ); if (autoPlay!=='undefined'){ clearInterval(autoPlay); } }, 1000); } timer();
Проблема возникает из-за того, что вы каждую секунду создаете новый интервал с функцией GetCHANGE(), что приводит к накоплению множества интервалов и возможному перегрузу страницы.
Для решения этой проблемы вам необходимо переписать ваш код следующим образом:
function timer(){ var autoPlay; setInterval(function() { if(autoPlay) { clearInterval(autoPlay); } autoPlay = setInterval(GetCHANGE, 1000); }, 1000); } timer();
Теперь переменная autoPlay объявлена за пределами функции setInterval, чтобы избежать создания нового интервала каждую секунду. Также, исправлена ошибка в вызове функции GetCHANGE() (удалены скобки), чтобы передавалась ссылка на функцию, а не результат ее выполнения.
Это позволит установить интервал выполнения функции GetCHANGE() каждую секунду без возникновения излишней нагрузки на страницу.
Проблема возникает из-за того, что вы каждую секунду создаете новый интервал с функцией GetCHANGE(), что приводит к накоплению множества интервалов и возможному перегрузу страницы.
Для решения этой проблемы вам необходимо переписать ваш код следующим образом:
function timer(){var autoPlay;
setInterval(function() {
if(autoPlay) {
clearInterval(autoPlay);
}
autoPlay = setInterval(GetCHANGE, 1000);
}, 1000);
}
timer();
Теперь переменная autoPlay объявлена за пределами функции setInterval, чтобы избежать создания нового интервала каждую секунду. Также, исправлена ошибка в вызове функции GetCHANGE() (удалены скобки), чтобы передавалась ссылка на функцию, а не результат ее выполнения.
Это позволит установить интервал выполнения функции GetCHANGE() каждую секунду без возникновения излишней нагрузки на страницу.