如果解决了延迟状态,则何时被拒绝

时间:2012-11-14 17:49:25

标签: jquery jquery-deferred

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

这句话有什么问题?我想这是语法,但我不能把手指放在它上面。

1 个答案:

答案 0 :(得分:0)

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

首先是进行反演的函数:

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

现在,我们可以撰写一个相当传统的when()表达式,该表达式可以正常响应sbasbbsbcsbdsbe但是反向状态为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()将以与响应承诺相同的方式响应延迟。

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