Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 比赛条件:角度vs网络API&;数据库_Javascript_Angularjs - Fatal编程技术网

Javascript 比赛条件:角度vs网络API&;数据库

Javascript 比赛条件:角度vs网络API&;数据库,javascript,angularjs,Javascript,Angularjs,我有一个angular服务,它通过列表进行web api调用,在数据库中添加/修改记录(在一个小记录集上操作-最多更新10条记录)。由于angular服务返回承诺,所以在循环完成后,angular将重新加载状态,并更新一些数据。只有在我刷新页面后,列表才会完全更新。一切正常;然而,我认为angular在数据库完全完成其操作之前返回。有没有办法让我等到所有更新完成后再返回 下面是调用angular服务的列表迭代(最多10项): for (var i = 0, ii = $scope.Model.p

我有一个angular服务,它通过列表进行web api调用,在数据库中添加/修改记录(在一个小记录集上操作-最多更新10条记录)。由于angular服务返回承诺,所以在循环完成后,angular将重新加载状态,并更新一些数据。只有在我刷新页面后,列表才会完全更新。一切正常;然而,我认为angular在数据库完全完成其操作之前返回。有没有办法让我等到所有更新完成后再返回

下面是调用angular服务的列表迭代(最多10项):

for (var i = 0, ii = $scope.Model.permissions.length; i < ii; i++) {
    //if id === 0, it is a new record
    if ($scope.Model.permissions[i].New === true && $scope.Model.permissions[i].Deleted === false) {
        angularService.update($scope.Model.permissions[i]);
    }
}
其中每个承诺将分配给资源调用:

$scope.Model.permissions=permissionFactory.fetch({id:$stateParams.id);…

我不认为我可以简单地使用这个模式,因为我正在循环列表


任何帮助或指导都将不胜感激!

在循环中,您可以将承诺存储在一个数组中,然后在您的
$q中使用该数组。all
很好的调用,过去我实际上只是用$q.all([promise1,promise2])做同样的事情。然后(…)。谢谢!@minicem希望它能有所帮助;)
ArrayOFPromises = [];

for (var i = 0, ii = $scope.Model.permissions.length; i < ii; i++) {
    //if id === 0, it is a new record
    if ($scope.Model.permissions[i].New === true && $scope.Model.permissions[i].Deleted === false) {
        ArrayOFPromises.push(angularService.update($scope.Model.permissions[i]));
    }
}
ArrayOFPromises = [];

for (var i = 0, ii = $scope.Model.permissions.length; i < ii; i++) {
    //if id === 0, it is a new record
    if ($scope.Model.permissions[i].New === true && $scope.Model.permissions[i].Deleted === false) {
        ArrayOFPromises.push(angularService.update($scope.Model.permissions[i]));
    }
}
$q.all(ArrayOFPromises).then(function () {
    //dosomething
});