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

21 Авг 2019 в 06:23
264 +1
0
Ответы
1

Проблема возникает из-за того, что вы каждую секунду создаете новый интервал с функцией GetCHANGE(), что приводит к накоплению множества интервалов и возможному перегрузу страницы.

Для решения этой проблемы вам необходимо переписать ваш код следующим образом:

function timer(){
var autoPlay;
setInterval(function() {
if(autoPlay) {
clearInterval(autoPlay);
}
autoPlay = setInterval(GetCHANGE, 1000);
}, 1000);
}
timer();

Теперь переменная autoPlay объявлена за пределами функции setInterval, чтобы избежать создания нового интервала каждую секунду. Также, исправлена ошибка в вызове функции GetCHANGE() (удалены скобки), чтобы передавалась ссылка на функцию, а не результат ее выполнения.

Это позволит установить интервал выполнения функции GetCHANGE() каждую секунду без возникновения излишней нагрузки на страницу.

20 Апр 2024 в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир