我正在使用jquery进行承诺。
我有一个场景,我有两个承诺。
如果promise1拒绝或解决,则system1应分别拒绝或解决。
如果promise2拒绝或解决,system2应该解决。
在两者结算并且system1和system2都已解决后,应调用函数X.
我试过了:
var dp = $.when(promise1, promise2);
dp.done(function(one,two){
X();
}).fail(function(){
// promise1 might have not settled as of yet.
Should call X or not ?
});
但是只要其中一个承诺失败,它就会返回。所以我的promise1在调用失败时没有得到解决。
我该怎么做?
答案 0 :(得分:0)
行为完全符合文档:您的问题的答案也在文档中 italised 。
在多个Deferreds案例中,其中一个Deferreds被拒绝, jQuery.when立即为其master发出failCallbacks 递延。请注意,某些延迟可能仍未解决 那一点。 如果您需要为此执行其他处理 如果取消任何未完成的ajax请求,你可以保留 对闭包中的底层jqXHR对象的引用 在failCallback中检查/取消它们。