【发布时间】:2016-01-14 14:15:11
【问题描述】:
我有一个存储从不同函数返回的承诺的数组。我用过
_.each(someDiffArray,function(element){
var promise = renderSomething();
promiseArray.push(promise);
}
renderSomething 有时会返回延迟承诺。
$.when.apply($, promiseArray).done(function() {
//doSomething
});
但是当promiseArray 中的一个或多个promise 被延迟并且它已解决并且其他promise 尚未完成或已解决控制将进入$.when.apply 的回调函数中。
我不知道为什么会这样,有人可以帮忙吗?是因为 deferred 的行为还是有其他问题?
【问题讨论】:
-
请创建一个复制此行为的演示
-
这不应该发生。你能用简单的fiddle 重现你的问题吗?
-
如果
promiseArray中的任何请求失败,就会出现此行为 - 您是否检查过请求的状态代码? -
Rory 是对的,您应该将回调更改为 .then 和 .catch 或 .error 以获得更好的实践。
-
@Rory,确实如此,但在那种情况下,
done()不会运行(fail()或always()会运行),所以我仍然无法以这种方式解释提问者观察到的行为。
标签: javascript jquery