我有一个有角度的服务,迭代一个列表,进行web api调用,在数据库中添加/修改记录(操作一个小记录集-最多10个记录来更新)。由于角服务正在返回承诺,因此在循环完成后,使用一些更新的数据重新加载状态。只有在刷新页面之后,列表才会完全更新。一切都如预期的那样工作;不过,我认为在数据库完全完成其操作之前,角正在返回。有什么方法可以让我有角度的等待返回直到所有的更新完成吗?
下面是对调用角服务的列表(有最多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]);
}
}在过去,我曾使用$q等待所有承诺在执行一段代码之前得到解决:
$q.all([$scope.Model.permissions.$promise,
$scope.Model.configurations.$promise
]).then(function () {
$scope.dataLoaded = true;
});每一项承诺都将分配给资源调用:
$scope.Model.permissions = permissionFactory.fetch({ id: $stateParams.id);...
我不认为我可以使用这个模式仅仅因为我正在循环列表。
如有任何帮助或指导,将不胜感激!
发布于 2015-05-08 14:16:05
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
});https://stackoverflow.com/questions/30125835
复制相似问题