jQuery延迟了链接保存,统一结果

jQuery Deferreds with Chained Saves, Unified Result

本文关键字:结果 保存 延迟 链接 jQuery      更新时间:2023-09-26

我有两个对象,ObjectAObjectB。我想只在ObjectA完成后保存ObjectB,但我想返回一个包含这两个结果的promise。

这是我第一次破解它,展示我想要的功能。这个功能很好——只是很难看,当然还有更好的方法。

函数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();
}

我只想使用$.when并在saveObjectA上添加done回调来触发saveObjectB,但saveObjectB的延迟还不存在,所以我不相信我可以立即在它上使用$.when

关于如何解决这一问题的想法是一种更优雅的方式,我们将不胜感激!

.pipe()正是执行您手动编码的任务:

var saveAAndBSequentially = function () {
    return saveObjectA().pipe(function () {
        return saveObjectB();
    });
};