Вот полезная статья о длительном опросе (длительном HTTP-запросе) с использованием jQuery. Фрагмент кода, взятый из этой статьи:
(function poll() {
setTimeout(function() {
$.ajax({
url: "/server/api/function",
type: "GET",
success: function(data) {
console.log("polling");
},
dataType: "json",
complete: poll,
timeout: 2000
})
}, 5000);
})();
Это сделает следующий запрос только после завершения запроса ajax.
Вариант вышеуказанного, который будет выполняться немедленно при первом вызове перед соблюдением интервала ожидания / тайм-аута.
(function poll() {
$.ajax({
url: "/server/api/function",
type: "GET",
success: function(data) {
console.log("polling");
},
dataType: "json",
complete: setTimeout(function() {poll()}, 5000),
timeout: 2000
})
})();
setTimeout
а некоторые использовалиsetInterval
. Почему одно предпочтительнее другого?