这是我的职责

  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调用,请帮助我!在此先多谢!!

最佳答案

xhrPool = []函数之外定义fn。每次调用xhrPool时,在每次调用fn时都会重新定义setIntervalfunction abortAjax()应该是abortAjax()

08-28 00:16