Скажем, у меня есть некоторые данные, которые мне нужно получить с сервера каждые 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.
Каков наилучший способ обработки функции, которую нужно периодически вызывать?