Javascript 获取最新的ajax请求并中止其他请求

Javascript 获取最新的ajax请求并中止其他请求,javascript,jquery,html,ajax,queue,Javascript,Jquery,Html,Ajax,Queue,我一直在寻找,这个问题似乎很简单,但找不到答案。我有多个请求调用不同的url。但是对于每个url,我只需要一次结果,并且它必须是同一url中被调用的最后一个。我现在的问题是“如何只得到最后一个?”我看了这个,它似乎有3年了: 有没有其他方法可以很好、干净地做到这一点?如果有这样的事情,那就太完美了: queue: "getuserprofile", cancelExisting: true (其中将取消getuserprofile队列中的现有ajax) 谢谢如何使用jQuery进行ajax调

我一直在寻找,这个问题似乎很简单,但找不到答案。我有多个请求调用不同的url。但是对于每个url,我只需要一次结果,并且它必须是同一url中被调用的最后一个。我现在的问题是“如何只得到最后一个?”我看了这个,它似乎有3年了:

有没有其他方法可以很好、干净地做到这一点?如果有这样的事情,那就太完美了:

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(){}

});