Angular 6的HTTP请求数组失败

时间:2018-08-13 07:14:58

标签: angular rest rxjs httpresponse

我需要这个http请求循环的帮助,在这里我试图循环一些请求并将响应推送到数组中,但是在获得任何响应之前代码已经存在。谢谢您的帮助和建议

 publicgetMultipleTeamsData(teamIds:Array<string>,dateRange:any):
    Observable<any[]>{
          let response = [];
          teamIds.forEach(teamId => {
            this.getTeamDetails(teamId, dateRange)
            .map( tdata => {
              response.push(tdata);
            });
          });
          return Observable.forkJoin(Observable.of(response));
        }

3 个答案:

答案 0 :(得分:2)

似乎您计划将一些数据放入MainClass中的response,然后map的所有响应中,但这是行不通的:)。 对于我来说,您应该这样做:

forkJoin

答案 1 :(得分:0)

您可以尝试

public getMultipleTeamsData(teamIds:Array<string>,dateRange:any) {
 let arrObservables = teamIds.map(teamId => this.getTeamDetails(teamId, dateRange))

 return Observable.forkJoin(...arrObservables);
}

答案 2 :(得分:0)

securityActions() {
  let response = [];
  teamIds.forEach(teamId => {
    this.getTeamDetails(teamId, dateRange)
      .map(tdata => {
        response.push(tdata);
      });
  });
  return Observable.forkJoin(Observable.of(response));
}

让我们说出来:

  

创建一个响应数组   对于每个团队ID,创建一个HTTP,并在调用完成后将响应推送到其中   不要等待调用结束,然后从响应中发出HTTP调用。   不要订阅电话,这不会触发他们

如果要使其工作,请尝试以下操作:

return forkJoin(teamIds.map(ID => this.getTeamDetails(ID, dateRange)));