Javascript 获取最新的ajax请求并中止其他请求
我一直在寻找,这个问题似乎很简单,但找不到答案。我有多个请求调用不同的url。但是对于每个url,我只需要一次结果,并且它必须是同一url中被调用的最后一个。我现在的问题是“如何只得到最后一个?”我看了这个,它似乎有3年了: 有没有其他方法可以很好、干净地做到这一点?如果有这样的事情,那就太完美了:Javascript 获取最新的ajax请求并中止其他请求,javascript,jquery,html,ajax,queue,Javascript,Jquery,Html,Ajax,Queue,我一直在寻找,这个问题似乎很简单,但找不到答案。我有多个请求调用不同的url。但是对于每个url,我只需要一次结果,并且它必须是同一url中被调用的最后一个。我现在的问题是“如何只得到最后一个?”我看了这个,它似乎有3年了: 有没有其他方法可以很好、干净地做到这一点?如果有这样的事情,那就太完美了: queue: "getuserprofile", cancelExisting: true (其中将取消getuserprofile队列中的现有ajax) 谢谢如何使用jQuery进行ajax调
queue: "getuserprofile",
cancelExisting: true
(其中将取消getuserprofile队列中的现有ajax)
谢谢如何使用jQuery进行ajax调用以及如何中止它。您所需要做的就是创建一个存储每个请求的数组。然后,您可以在添加新请求时取消以前的请求
ajaxRequests = new Array();
queueRequest = function() {
if(ajaxRequests[ajaxRequests.length - 1]) {
ajaxRequests[ajaxRequests.length - 1].abort();
}
ajaxRequests[ajaxRequests.length] = //Insert New jQuery AJAX call here.
}
因为我们只需要最后一个请求的结果,所以这非常简单并且有效
var ajax = null;
var getFoo = function() {
if(ajax) ajax.abort();
ajax= $.ajax({});
};
getFool();
getFool();
getFool();
getFool();
getFool();
getFool();
只执行最后一个请求。您可以使用基本的jquery Ajax方法,而不是使用库:
发送前:{}
例如:
xhr = jQuery.ajax({
url: /*Your URL*/
type: "POST",
data: {
//data
},
/* if there is a previous ajax request, then we abort it and then set xhr to null */
beforeSend : function() {
if(xhr != null) {
xhr.abort();
}
},
success:function(){}
});