我有两个对象ObjectA
和ObjectB
。我想在ObjectB
完成后才保存ObjectA
,但我想返回一个包含两者结果的承诺。
这是我第一次用它来展示我想要的功能。这个功能很好,它只是丑陋而且肯定有更好的方法。
函数saveObjectA
和saveObjectB
都返回$.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
并在done
添加saveObjectA
回调来触发saveObjectB
,但saveObjectB
的延迟还不存在所以我不相信我可以马上使用$.when
。
如何解决这个问题的想法是一种更优雅的方式,非常感谢!
答案 0 :(得分:1)
.pipe()
完成了您手动编码的任务:
var saveAAndBSequentially = function () {
return saveObjectA().pipe(function () {
return saveObjectB();
});
};