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