链接N AngularJS承诺

时间:2015-03-13 11:07:30

标签: javascript angularjs angular-promise

我已经为控制器编写了保存代码。工作量是可变的,可以是deleteaddedit操作。我希望它们按照特定的顺序完成,所以我想以某种方式创建一个承诺链,使每个动作在另一个之后完成,即

  1. 按顺序处理所有delete次操作
  2. 按顺序处理所有add次操作
  3. 按顺序处理所有edit次操作
  4. 目前我的代码看起来像这样

    // 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个承诺。

0 个答案:

没有答案