[英]How to abort list of all the pending ajax requests using jquery?
這是我的職責
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
調用都會重新定義xhrPool
。 function 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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.