AngularJS循环异步无效调用

时间:2018-09-10 14:56:38

标签: angularjs asynchronous

我在这里有这段代码

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调用完成?

谢谢

0 个答案:

没有答案