javascript - 在处理延迟数组时获得成功的延迟并忽略失败的延迟

标签 javascript jquery ajax

<分区>

在我下面的代码中,如果任何延迟失败,它将进入失败 block 并且所有内容都将丢失。我在这里想要的是,忽略失败的并捕获成功的。有什么优雅的方法吗?如果所有延迟都失败,我将如何去失败的 block 。 一种解决方法是采用 for 循环并在该循环中一个接一个地处理 deferredItems 数组,但这不是一种优雅的方式。

$.when.apply($, deferredItems).done(function(){

}).fail(function(errorObj) {

});

最佳答案

您可以使用 .always,然后按照您的建议找到已解决的问题

$.when.apply($, deferredItems).always(function(){
  var resolvedDeferreds = $.grep(deferredItems, function(deferred){
    return deferred.state() === 'resolved';
  });

  //do stuff with resolved deferreds
})

编辑:

事实证明这是行不通的。 .always 回调会在一个 deferred 失败后立即被调用,并且不会等待剩余的挂起 deferred。看起来没有办法等待延迟数组全部得到解决或仅使用 jquery.when 原样拒绝。

关于javascript - 在处理延迟数组时获得成功的延迟并忽略失败的延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34949214/

相关文章:

javascript - 主干 Json View 模板

javascript - 我想在 javascript 中使用 window.getComputedStyle() 获取字体大小,但它不能

jquery - ajaxComplete 不适用于 $(window)

javascript - AJAX/Javascript - 将 txt 文件的内容传递给 Javascript 变量

php - 如何实现桌面股票行情?

在重新启动的 Tomcat 中刷新页面后,AJAX GET 请求出现在 URL 栏中

javascript - 如何删除 pnpm 中的嵌套依赖项

javascript - 如何获取鼠标坐标并调用.push()?

javascript - EditableGrid - 通过 jQuery 获取 <td> 的新值

jquery - 在 JQuery UI 选项卡的当前选项卡中打开链接