这是我的职责
var xhr;
function abortAjax() {
$.each(xhrPool, function(idx, jqXHR) {
jqXHR.abort();
});
}
$(document).ready(function() {
fn = function() {
xhrPool = [];
xhr = $.ajax({
url: '/getUrl',
beforeSend: function(jqXHR) {
xhrPool.push(jqXHR);
},
complete: function(jqXHR, data) {
if (jqXHR.statusText != "error") {
//my functions
}
}
});
};
var interval = setInterval(fn, 5000);
});
function abort_allAjax(){
//I need to make fresh ajax call when it enters this function
function abortAjax();
fn();
}
fn是我更新表数据的功能。它每5秒更新一次,因此会有许多待处理的ajax请求。
当我调用abort_allAjax()函数时,需要更新新数据,因此我需要中止所有待处理的请求并进行新的ajax调用。
我尝试使用
function abortAjax() {
$.each(xhrPool, function(idx, jqXHR) {
jqXHR.abort();
});
}
但是它仅中止最后一个ajax调用。如果有人有想法或任何可行的示例来中止所有的ajax调用,请帮助我!在此先多谢!!
最佳答案
在xhrPool = []
函数之外定义fn
。每次调用xhrPool
时,在每次调用fn
时都会重新定义setInterval
。 function abortAjax()
应该是abortAjax()
。