jQuery Ajax请求abort()仍然排队先前的请求

时间:2017-05-04 09:25:50

标签: javascript jquery ajax request abort

当我尝试中止以前的jQuery AJAX请求时,我遇到了一种奇怪的行为。

情景:

  • 一个带有AJAX-Call的Button,可以获取大量数据。正常请求(1次点击)需要~1.75s。

屏幕截图:Network Monitor: Single Request (image)

当然我想防止多次点击,所以我有一个功能可以中止以前的请求。在下一个例子中,我连续7次快速点击。

在网络监视器中,我可以看到,一旦我执行下一个请求,先前的请求就会被直接取消。按预期工作?似乎是这样,但实际上并非如此。

因为最后一个ACTIVE请求现在需要 20秒才能完成,而不是~1.75s

查看屏幕截图:Multiple Requests

错误在哪里?提前谢谢。

JS代码:

var theRequest;
function registerAjaxInterceptor(linkElementSelector, outputTime) {
    $('body').on('click', linkElementSelector, function (event) {
        event.preventDefault();
        var $linkElement = $(this);
        var uri = $linkElement.attr('href');

        theRequest = $.ajax(
            uri,
            {
                'type': 'post',
                'beforeSend': function()    {
                    if(theRequest != null) {
                        theRequest.abort();
                    }
                },
            }
        ).done(function (result) {

        });
    });

}

registerAjaxInterceptor('.ajax-link', false);

0 个答案:

没有答案