Javascript 链接N AngularJS承诺
我已经为控制器编写了保存代码。工作量是可变的,可以是Javascript 链接N AngularJS承诺,javascript,angularjs,angular-promise,Javascript,Angularjs,Angular Promise,我已经为控制器编写了保存代码。工作量是可变的,可以是删除、添加或编辑操作。我希望他们按照特定的顺序来完成,所以我想,以某种方式,创建一个承诺链,在每个动作之后进行另一个动作,即 按顺序处理所有delete操作 按顺序处理所有添加操作 按顺序处理所有edit操作 目前我的代码如下所示 // Save deleted groups first angular.forEach(listOfDeletedGroups, $scope.saveGroupDelete); // Now save adde
删除
、添加
或编辑
操作。我希望他们按照特定的顺序来完成,所以我想,以某种方式,创建一个承诺链,在每个动作之后进行另一个动作,即
delete
操作添加操作
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
使这些函数返回我可以与一起使用的承诺
但我不知道如何将这些请求串联起来,以确保它们按顺序发生,一个接一个地实现N个承诺。有帮助吗?看起来很棒。链是立即开始执行还是我必须以某种方式执行?它立即开始运行。将其包装在函数中,并在必要时调用它。
$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;
};