我在这里有这段代码
A preloaded list through a rest call...
$scope.loadedList = [{a:1,flag:false},{a:2,flag:false},{a:3,flag:false}];
angular.forEach($scope.loadedList, function( value , key ) {
if (value.a < 3){
...rest call that changes the flag to true at database, with void return}
return $scope.loadedList.length; --> This is 3 and it's ok
}).then(_loadedListLength){
...a rest call to get the list again, with falg = false
这是问题所在。 _loadedListLength = 3 ,这是可以的,因为我没有更改列表中的元素。
但是,第二次调用(仅检索带有flag = false的元素)完全返回了开始时的列表。
显然,在我再次检索列表之前,循环内的那些调用未完成。
我尝试过的事情
我发现我应该将每个promise推入数组中的循环中,让我们将其称为承诺,然后执行以下操作:
$q.all(promises).then(doSomethingAfterAllRequests);
问题是循环内的那些调用是无效的。
如果我必须在一个问题中总结问题:
在执行对服务器的另一次调用之前,如何等待循环中的一系列异步void调用完成?
谢谢