0

2つのオブジェクトがObjectAありObjectBます。ObjectB終わってから保存したいObjectAのですが、両方の結果をまとめた約束を返したいです。

これが、必要な機能を表示するための最初のハックです。この関数は正常に機能しますが、それは醜いだけで、確かにもっと良い方法があります。

関数saveObjectAsaveObjectB両方が$.post()promiseを返します。

saveAAndBSequentially: function () {
    var dfd = $.Deferred();
    saveObjectA().done(function () {
        saveObjectB().done(function () {
            dfd.resolve();
        }).fail(function () {
            dfd.reject(); 
        });
    }).fail(function () {
        dfd.reject(); 
    });

    return dfd.promise();
}

トリガーするためにコールバックを使用$.whenして追加するだけですが、遅延はまだ存在しないため、すぐに使用できるとは思いません。donesaveObjectAsaveObjectBsaveObjectB$.when

これをよりエレガントな方法で解決する方法についてのアイデアは大歓迎です!

4

1 に答える 1

1

.pipe()ハンドコーディングしたタスクを正確に実行します。

var saveAAndBSequentially = function () {
    return saveObjectA().pipe(function () {
        return saveObjectB();
    });
};
于 2012-08-06T15:58:49.710 に答える