2017-07-15 62 views
2

我创建了一个函数,用于成为电报用户帐户中所有聊天的所有成员(但这种情况并不重要)。在函数中发送聊天ID列表。通过angular.forEach函数apiFunctionForRequestMembersListOfChats向服务器发送每个聊天ID的请求,并返回此聊天成员的列表。该列表添加到成员列表中。并且所有成员列表从函数返回程序。如何在Angularjs中执行多个api请求

function getAllMembers(chatsID) { 
    var members = []; 
    angular.forEach(chatsID, function(chatID) { 
      apiFunctionForRequestMembersListOfChats(chatID).then(function(chat_members) { 
        angular.forEach(chat_members, function(member) { 
         members.push(member); 
         alert("current members count: " + members.length); 
        }) 
       }; 
      }); alert("all members count: " + members.length); 
     return members; 
    } 
} 

但是,当API函数完成并返回成员的空列表时,不等待。我成了这个警报:

全体成员数:0 目前成员数:7名 目前成员数:42名 目前成员数:59

如何使功能等待所有的API,请求和返回成员的完整列表?

+0

解决所有的承诺和他们推到一个数组,并使用$ q.all – Vivz

+0

我会为一个小例子感激 –

+0

检查https://stackoverflow.com/questions/21310964/angularjs-q-all – Vivz

回答

0
function getAllMembers(chatsID) { 
    var members = []; 
    var promise = []; 
    angular.forEach(chatsID, function(chatID) { 

      promise.push(new Pormise((resolve,reject)=>{ 
       apiFunctionForRequestMembersListOfChats(chatID).then(function(chat_members) { 
         angular.forEach(chat_members, function(member) { 
          members.push(member); 
          // alert("current members count: " + members.length); 
         }) 
         resolve(member); 
       }); 
      })); 
     }) 

     return $q.all(promise); 
    } 
} 

要求它应该工作,并在年底你会得到所有的请求,并在成员响应算尝试控制台,当你调用这个方法,你会得到更加清晰。如果您仍然有任何疑问,请告诉我。

+1

这是对我很有帮助 –