Angularjs 角度资源一个接一个地保存在For/While循环中

Angularjs 角度资源一个接一个地保存在For/While循环中,angularjs,spring-data-neo4j,Angularjs,Spring Data Neo4j,我需要在for/while循环中从列表中保存规范项(specitems),但它们必须一个接一个地发生,如下面的代码中所示。在我的代码中,首先保存规范类,获取其id(cid),然后开始保存属于规范类的规范项。下面的代码运行良好,但只适用于有限的迭代次数。如果不关心下一次保存发生在另一次之后,我的spring-neo4j后端会做一些奇怪的事情,即将specitems保存为节点,但不保存它们与specclass的关系。很可能那里也出了问题 if ($scope.specitems[0]){ $

我需要在for/while循环中从列表中保存规范项(specitems),但它们必须一个接一个地发生,如下面的代码中所示。在我的代码中,首先保存规范类,获取其id(cid),然后开始保存属于规范类的规范项。下面的代码运行良好,但只适用于有限的迭代次数。如果不关心下一次保存发生在另一次之后,我的spring-neo4j后端会做一些奇怪的事情,即将specitems保存为节点,但不保存它们与specclass的关系。很可能那里也出了问题

if ($scope.specitems[0]){
    $scope.specitems[0].specClass = cid;
    spClass = new SpecItemService($scope.specitems[0]);
    $scope.specitems.splice(0, 1);
    spClass.$save(function(data) {
        if ($scope.specitems[0]){
            $scope.specitems[0].specClass = cid;
            spClass = new SpecItemService($scope.specitems[0]);
            $scope.specitems.splice(0, 1);
            spClass.$save(function(data) {
                $log.warn("Saved: "+data.name);
                if ($scope.specitems[0]){
                    $scope.specitems[0].specClass = cid;
                    spClass = new SpecItemService($scope.specitems[0]);
                    $scope.specitems.splice(0, 1);
                    spClass.$save(function(data) {
                        $log.warn("Saved: "+data.name);
                        if ($scope.specitems[0]){
                            $scope.specitems[0].specClass = cid;
                            spClass = new SpecItemService($scope.specitems[0]);
                            $scope.specitems.splice(0, 1);
                            spClass.$save(function(data) {
                                $log.warn("Saved: "+data.name);
                            });                    
                        };
                   });                    
               };
           });                    
       };
   });                    
};

您可以创建一些方法,并从
$save
回调中一次又一次地调用它(通过递归方式)

比如:

$scope.loop = function(){
 if ($scope.specitems[0]){
    spClass.$save(function(data) {
       //....
       $scope.loop();
 });
 }     
}