javascript - 忽略 jQuery.when 期间的超时

标签 javascript jquery jquery-deferred

我有一些 jQuery ajax 请求,它们与 .when 调用并行运行。我想忽略那些在超时后没有返回的。

这是它的一个简单形式:

var ajax1 = $.ajax({url: url1,
    timeout: 1000,
    success: function() {
        console.log("1 done");
    }
});

var ajax2 = $.ajax({url: url2,
    timeout: 1000,
    success: function() {
        console.log("2 done");
    }
});

$.when(ajax1, ajax2).done(function() {
    console.log("all done");
});

在上面的例子中,如果 url1 在 1 秒内没有响应,我仍然想达到“全部完成”。我知道如何在每个 ajax 调用中捕获超时错误,但我不知道如何将错误标记为忽略。

最佳答案

你不能只使用.always()吗?如果您想要以所有方式(成功、错误、超时等)完成 ajax 调用,而不是仅以成功方式完成:

$.when(ajax1, ajax2).always(function() {
    console.log("all done");
});

传递给 .always() 回调的参数可用于确定 ajax 调用是否成功或错误类型。

关于javascript - 忽略 jQuery.when 期间的超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16024153/

相关文章:

javascript - 更改字体取决于选择选项标签

jquery - 什么会导致延迟对象被拒绝?

javascript - 如何在静态网站中重用 html/css/javascript?

javascript - 如何在 firebase 数据库中的所有消息子级中将 "read"更新为 true

javascript - NG-repeat on 指令创建重复的 DOM 元素

javascript - JSON 解析表情符号 unicode 使我的 React Native 项目崩溃

javascript - Fullcalendar - 无法在月 View 中显示日期名称

javascript - VAR 计数并在所选元素之间切换,但复制属性

javascript - 为 jQuery 延迟对象提供默认的 'fail' 方法

javascript - 通过用户输入停止 jquery .then 链