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"};
この声明で何が摩耗していますか?構文だと思いますが、指が置けません。
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"};
この声明で何が摩耗していますか?構文だと思いますが、指が置けません。
これは、いくつかの逆解決ロジックで解決できると思います。拒否に応じて解決される遅延オブジェクト、およびその逆。
最初に反転を行う関数:
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()
私が言うように、これはうまくいくと思います。それは完全にテストされていません。