Aquí hay un artículo útil sobre el sondeo largo (solicitud HTTP de larga duración) usando jQuery. Un fragmento de código derivado de este artículo:
(function poll() {
setTimeout(function() {
$.ajax({
url: "/server/api/function",
type: "GET",
success: function(data) {
console.log("polling");
},
dataType: "json",
complete: poll,
timeout: 2000
})
}, 5000);
})();
Esto hará la siguiente solicitud solo después de que se haya completado la solicitud ajax.
Una variación de lo anterior que se ejecutará inmediatamente la primera vez que se llame antes de respetar el intervalo de espera / tiempo de espera.
(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
y otras han usadosetInterval
. ¿Por qué se preferiría uno a otro?