Javascript 如何使用jquery中止所有未决ajax请求的列表?
这是我的职责Javascript 如何使用jquery中止所有未决ajax请求的列表?,javascript,jquery,ajax,Javascript,Jquery,Ajax,这是我的职责 var xhr; function abortAjax() { $.each(xhrPool, function(idx, jqXHR) { jqXHR.abort(); }); } $(document).ready(function() { fn = function() { xhrPool = []; xhr = $.ajax({
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调用,请帮助我!!提前多谢 在
fn
函数之外定义xhrPool=[]
<调用setInterval
时,每次调用fn
时都会重新定义code>xhrPool<代码>函数abortAjax()应该是abortAjax()
定义xhrPool=[]
在fn
函数之外<调用setInterval
时,每次调用fn
时都会重新定义code>xhrPool<代码>函数abortAjax()应该是abortAjax()
我像下面这样修改过,它可以工作
abortValue = false;
var xhr;
xhrPool = [];
var trying;
function abortAjax() {
$.each(xhrPool, function(idx, jqXHR) {
jqXHR.abort();
});
}
$(document).ready(function() {
fn = function() {
xhr = $.ajax({
url: '/getUrl',
beforeSend: function(jqXHR) {
xhrPool.push(jqXHR);
},
complete: function(jqXHR, data) {
if (abortValue == true) {
abortAjax()
} else {
if (jqXHR.statusText != "error" && "undefined") {
//myactions
}
}
}
});
};
var interval = setInterval(fn, 5000);
});
function updateData_function {
//I want to abort all previous ajax calls and make a new ajax call since it will update the data
abortValue = true;
abortAjax();
abortValue = false;
fn();
}
我修改如下,它的工作
abortValue = false;
var xhr;
xhrPool = [];
var trying;
function abortAjax() {
$.each(xhrPool, function(idx, jqXHR) {
jqXHR.abort();
});
}
$(document).ready(function() {
fn = function() {
xhr = $.ajax({
url: '/getUrl',
beforeSend: function(jqXHR) {
xhrPool.push(jqXHR);
},
complete: function(jqXHR, data) {
if (abortValue == true) {
abortAjax()
} else {
if (jqXHR.statusText != "error" && "undefined") {
//myactions
}
}
}
});
};
var interval = setInterval(fn, 5000);
});
function updateData_function {
//I want to abort all previous ajax calls and make a new ajax call since it will update the data
abortValue = true;
abortAjax();
abortValue = false;
fn();
}
从jQuery3开始,ajax方法返回一个承诺而不使用额外的方法(比如abort),因此这将不再有效。请参阅3.0博客@RamyaS。从jquery3开始,ajax方法返回一个承诺,而不使用额外的方法(如abort),因此这将不再有效。请参阅3.0博客@RamyaS-See