我已经为控制器编写了保存代码。工作量是可变的,可以是delete
,add
或edit
操作。我希望它们按照特定的顺序完成,所以我想以某种方式创建一个承诺链,使每个动作在另一个之后完成,即
delete
次操作add
次操作edit
次操作目前我的代码看起来像这样
// Save deleted groups first
angular.forEach(listOfDeletedGroups, $scope.saveGroupDelete);
// Now save added groups
angular.forEach(listOfAddedGroups, $scope.saveGroupAdd);
// Now save any edits
angular.forEach(listOfChangedGroups, $scope.saveGroupEdits);
我的保存方法非常相似,如下所示:
$scope.saveGroupDelete = function (group) {
groupAPIService.deleteGroup(group)
.success(function () {
})
.error(function () {
$scope.savingInfo.numErrors++;
})
.finally(function () {
$scope.savingActionComplete(group);
});
};
我知道我可以使用$q
使这些函数返回我可以与.then()
$scope.saveGroupDelete = function (group) {
var deferred = $q.defer();
groupAPIService.deleteGroup(group)
.success(function () {
})
.error(function () {
$scope.savingInfo.numErrors++;
})
.finally(function () {
$scope.savingActionComplete(group);
deferred.resolve();
});
return deferred.promise;
};
但是我不知道如何将这些请求链接起来以确保它们按顺序发生,一个接一个地用于N个承诺。