jQuery: utilizar esto como un punto de partida - como fuente de inspiración. Lo resuelto de esta manera: (esto no es una solución perfecta, sólo se cancela la última instancia y es de código WIP)
var singleAjax = function singleAjax_constructor(url, params) {
// remember last jQuery's get request
if (this.lastInstance) {
this.lastInstance.abort(); // triggers .always() and .fail()
this.lastInstance = false;
}
// how to use Deferred : http://api.jquery.com/category/deferred-object/
var $def = new $.Deferred();
// pass the deferrer's request handlers into the get response handlers
this.lastInstance = $.get(url, params)
.fail($def.reject) // triggers .always() and .fail()
.success($def.resolve); // triggers .always() and .done()
// return the deferrer's "control object", the promise object
return $def.promise();
}
// initiate first call
singleAjax('/ajax.php', {a: 1, b: 2})
.always(function(a,b,c) {console && console.log(a,b,c);});
// second call kills first one
singleAjax('/ajax.php', {a: 1, b: 2})
.always(function(a,b,c) {console && console.log(a,b,c);});
// here you might use .always() .fail() .success() etc.
posible duplicado de [. Matar peticiones Ajax utilizando javascript usando jquery] (http://stackoverflow.com/questions/446594/kill-ajax-requests-using-javascript-using-jquery) – karim79
Su pregunta indica que la solicitud debe realizarse cada 5 segundos, pero el código usa 500 ms = 0.5 s. – geon