在处理延迟数组时获取成功的延迟并忽略失败的延迟
Get successful defers and ignore failed ones while processing array of defers
在下面的代码中,如果任何延迟失败,它将进入失败块,一切都会丢失。我在这里想要的是,忽略失败的并抓住成功的。有什么优雅的方法吗?以及如果所有延迟都失败,我将如何进入失败的块。一种解决方法可能是采用 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
回调,并且不会等待剩余的挂起延迟。看起来没有办法等待一个延迟数组都得到解析或拒绝,只使用 jquery.when 按原样。
使用.always()
$.map([a, b], function(d) {
$.when(d).always(function(data) {
console.log(data)
})
})
相关文章:
- 可以简化嵌套的延迟Q Promises解析吗
- onclick函数需要双击,因为类分配延迟
- 当json解析空响应时,Whatwg-Fetch失败,我该如何防止它
- 更多延迟动画
- JsFiddle在分叉后描述失败
- 对父作用域的指令更新延迟了一步
- 为JS函数添加延迟
- 带有延迟的循环每次应运行5次
- 关键帧之间的css3动画延迟
- 如何在有延迟的情况下对两个代码进行积分
- 如何在 $ 中执行异步操作.延迟,然后失败过滤回调并传递回成功链
- 将延迟对象作为失败返回
- jQuery: $.when 延迟的 AJAX 调用 — 一个失败的调用会取消其他调用
- 在处理延迟数组时获取成功的延迟并忽略失败的延迟
- 使用延迟对象/承诺的Ajax调用返回失败
- 继续jQuery延迟链的失败
- jQuery延迟对象链接失败
- 在失败之前轮询结果n次(尝试之间有延迟)
- jQuery延迟函数中的语句静默失败
- 延迟加载knockoutjs, bookmarklet失败