我需要这个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));
}
答案 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)));