var promise = $.when(sba_dfd.promise(), sbb_dfd.promise(), sbc_dfd.promise(), sbd_dfd.promise(), sbe_dfd.promise());
if (sbf_dfd.state() || sbg_dfd.state() == "resolved") {promise.state()=="rejected"};
这句话有什么问题?我想这是语法,但我不能把手指放在它上面。
答案 0 :(得分:0)
我认为这可以通过一些反分辨率逻辑来解决,即。延迟对象,为响应拒绝而解析,反之亦然。
首先是进行反演的函数:
function inverse_resolve(promise) {
var dfrd = $.Deferred();
promise.done(dfrd.reject).fail(dfrd.resolve);
return dfrd.promise();
}
现在,我们可以撰写一个相当传统的when()
表达式,该表达式可以正常响应sba
,sbb
,sbc
,sbd
,sbe
但是反向状态为sbf
和sbg
。
$.when(sba_dfd, sbb_dfd, sbc_dfd, sbd_dfd, sbe_dfd, inverse_resolve(sbf_dfd), inverse_resolve(sbg_dfd)).done(function() {
//do something
});
为清楚起见,我在每种情况下都遗漏了.promise()
。在实践中,.promise()
不是必需的,因为.when()
将以与响应承诺相同的方式响应延迟。
正如我所说,我认为这会奏效。它完全未经测试。