对于一个有角度的项目,我必须嵌套承诺,我遇到了我不确定我在做什么的情况.这是我的一个代码:
return Action1().then(function (data) {
var defer = $q.defer();
if (data.condition) {
$q.all([Action2(), Action3(), Action4()]).then(function () {
defer.resolve();
});
} else {
defer.reject("error_code");
}
return defer.promise;
});
Run Code Online (Sandbox Code Playgroud)
Action1,Action2,Action3和Action4正在使用promises函数.这是很多承诺和行动取决于条件.我可以这样做,并确保我的主要功能将始终被解决或拒绝?
我读到我们可以在promise函数中传递promise.我可以这样做,这与上面相同:
return Action1().then(function (data) {
var defer = $q.defer();
if (data.condition) {
defer.resolve($q.all([Action2(), Action3(), Action4()]);
} else {
defer.reject("error_code");
}
return defer.promise;
});
Run Code Online (Sandbox Code Playgroud)