0
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"};

这个声明中的内容是什么?我猜这是语法,但我就是不能指望它。

4

1 回答 1

0

我认为这可以通过一些逆解析逻辑来解决,即。响应拒绝而解决的延迟对象,反之亦然

首先是进行反转的函数:

function inverse_resolve(promise) {
    var dfrd = $.Deferred();
    promise.done(dfrd.reject).fail(dfrd.resolve);
    return dfrd.promise();
}

现在,我们可以组成一个相当常规的when()表达式,它通常响应sba, sbb, sbc, sbd,但响应andsbe的逆状态。sbfsbg

$.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()响应承诺一样响应延迟。

正如我所说,我认为这会奏效。它完全未经测试。

于 2012-12-20T04:16:26.163 回答