Поскольку вызываемая функция ссылается на локальные переменные родительской функции, не требует ли она поддержки стека вызовов?

тим, у меня есть некоторые данные, которые мне нужно получать с сервера примерно каждые 10 секунд. Я хотел бы иметь функцию, которая получает данные через AJAX и затем вызывает setTimeout, чтобы вызвать эту функцию снова:

function GetData(){
   $.ajax({
       url: "data.json",
       dataType: "json",
       success: function(data){
         // do somthing with the data

         setTimeout(GetData, 10000);
      },
      error: function(){
         setTimeout(GetData, 10000);
      }
   });
}

Если кто-то оставит веб-страницу открытой весь день, он может получить тысячи рекурсивных вызовов функций.

Я не хочу использовать setInterval, потому что это не учитывает сетевую задержку. Если сеть занята и обработка запроса занимает 15 секунд, я не хочу спрашивать его снова, пока не получу тайм-аут AJAX.

Каков наилучший способ обработки функции, которую необходимо периодически вызывать?

Ответы на вопрос(1)

Ваш ответ на вопрос