Javascript 在对请求调用abort之后,是否可以防止触发AJAX请求的错误回调?

Javascript 在对请求调用abort之后,是否可以防止触发AJAX请求的错误回调?,javascript,jquery,ajax,asp.net-ajax,Javascript,Jquery,Ajax,Asp.net Ajax,我的第一个问题是,我正在寻找一种方法,如果用户在发出请求时离开了页面,那么可以自动中止AJAX请求。我找到了解决那个问题的有效办法。现在我的问题是,在我的应用程序中中止特定的AJAX请求时,用户会被引导到一个错误页面(我相信这是一些错误回调中的预期行为),我不希望在请求期间用户只是导航到另一个页面的情况下出现这种行为 我希望继续使用上面链接的解决方案,但是修改它的方式会阻止错误回调的执行。我知道我可以在错误回调中检查status和readystate属性,但这意味着我必须在整个应用程序的所有AJ

我的第一个问题是,我正在寻找一种方法,如果用户在发出请求时离开了页面,那么可以自动中止AJAX请求。我找到了解决那个问题的有效办法。现在我的问题是,在我的应用程序中中止特定的AJAX请求时,用户会被引导到一个错误页面(我相信这是一些错误回调中的预期行为),我不希望在请求期间用户只是导航到另一个页面的情况下出现这种行为

我希望继续使用上面链接的解决方案,但是修改它的方式会阻止错误回调的执行。我知道我可以在错误回调中检查status和readystate属性,但这意味着我必须在整个应用程序的所有AJAX请求中包含这些检查,这不是很容易维护的。我的目标是将这些逻辑全部放在一个地方,或者至少放在尽可能少的地方

我尝试了以下方法,但没有成功。似乎先执行本地错误回调,然后执行到全局处理程序,然后就太迟了

非常感谢您的帮助。多谢各位

function onPageLoaded() {
    var jqxhrs = [];

    $(window).bind("beforeunload", function (event) {
        $.each(jqxhrs, function (idx, jqxhr) {
            if (jqxhr) {
                jqxhr.abort();
            }
        });
    });

    $(document).ajaxError(function (e, jqXHR, ajaxSettings, thrownError) {
        if (jqXHR.status === 0 || jqXHR.readyState === 0) {
            return;
        }
    });

    function registerJqxhr(event, jqxhr, settings) {
        jqxhrs.push(jqxhr);
    }

    function unregisterJqxhr(event, jqxhr, settings) {
        var idx = $.inArray(jqxhr, jqxhrs);
        jqxhrs.splice(idx, 1);
    }

    $(document).ajaxSend(registerJqxhr);
    $(document).ajaxComplete(unregisterJqxhr);
}

您可以在代码中的某个地方尝试这一点

   var response=Promise.all([ajaxcall1,ajaxcall2,ajaxcall3,....])
如果其中一个承诺没有解决,那么您可以处理错误

response.then((resp)=> //your code to handle resp )
.catch ((error)=>{ //handle error here})

您可以在代码中的某个地方尝试这一点

   var response=Promise.all([ajaxcall1,ajaxcall2,ajaxcall3,....])
如果其中一个承诺没有解决,那么您可以处理错误

response.then((resp)=> //your code to handle resp )
.catch ((error)=>{ //handle error here})