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