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