jQuery Deferred - 等待动态异步请求完成所有请求,即使某些请求失败

标签 jquery asynchronous jquery-deferred

我收到一个动态异步请求(对于我使用ajax的jsfiddle),无论成功还是失败,我都需要等待,这意味着即使某些请求失败,我只需要知道所有进程都已完成。

//动态:在我的例子中,这是由 ajax 请求生成的,因此后续异步请求的数量是灵活的

所以我最初使用了这段代码:

    $.when.apply($,deferreds).done(function() {
        $("div").append("<p>All done!</p>");
    }).fail(function(){
        $("div").append("<p>Something failed!</p>");
    });

但如果其中一个延迟失败,则会立即调用失败回调。我尝试将其更改为 always()但结果是:

未捕获类型错误:对象#没有“始终”方法

那么我如何为此实现一个always()类型的解决方案呢?

Fiddle

我的原始来源:jQuery Deferred - waiting for multiple AJAX requests to finish

最佳答案

如果您只想等待 $.Deferred 列表结束,无论它们是 rejected 还是 resolved,您可以在我在你的原始来源中的回答jQuery Deferred - waiting for multiple AJAX requests to finish :

$.when.apply($, $.map(deferreds, function(d) {
    var wrapDeferred = $.Deferred();
    // you can add .done and .fail if you want to keep track of each results individualy
    d.always(function() { wrapDeferred.resolve(); });
    return wrapDeferred.promise();
}));

关于jQuery Deferred - 等待动态异步请求完成所有请求,即使某些请求失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14846340/

相关文章:

javascript - Typescript中异步函数的返回值

javascript - $.递延 : How to detect when every promise has been executed

javascript - 从 td 获取列号

php - 使用 jQuery 阻止表单提交

asynchronous - HttpClient 任务被取消

c# - 从 Microsoft UWP 上的异步方法返回 Task<string>

javascript - Angular.js + require.js + jQuery 插件自定义指令

c# - 将js文件添加到bundle会导致错误

javascript - JQMobi + PhoneGap : Ajax Deferred promise methods not working

jquery - 如何使用 jquery 链接 ajax 调用