【发布时间】:2017-10-07 16:10:46
【问题描述】:
这是我的功能
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 调用,请帮助我!提前非常感谢!
【问题讨论】:
-
从 jQuery 3 开始,ajax 方法返回一个没有额外方法的承诺(如 abort),因此这将不再有效。见3.0博客blog.jquery.com/2016/01/14/jquery-3-0-beta-released
标签: javascript jquery ajax