0

我有两个对象,ObjectA并且ObjectB. 我只想ObjectBObjectA完成后保存,但我想返回一个包含两者结果的承诺。

这是我第一次破解它以显示我想要的功能。此功能工作正常,只是丑陋,肯定有更好的方法。

函数saveObjectAsaveObjectB两者都返回$.post()承诺。

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

    return dfd.promise();
}

我只是在trigger上使用$.when并添加一个done回调,但是 deferred for还不存在,所以我不相信我可以立即使用它。saveObjectAsaveObjectBsaveObjectB$.when

非常感谢有关如何以更优雅的方式解决此问题的想法!

4

1 回答 1

1

.pipe()完全执行您手动编码的任务:

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