【发布时间】:2017-05-08 13:47:24
【问题描述】:
我有两个 observables
getProfile(nickname: string, server: string): Observable<Profile> {
return this._http.get('http://localhost:3000/summoners?name='+ nickname + '&server=' + server )
.map((res: Response) => res.json())
.map((res: Object) => new Profile().from(res));
}
这个模型
export class Profile {
public id: number;
public accountId: number;
public name: string;
public summonerLevel: number;
第二个是
export class League {
public name: string;
public tier: string;
public queue: string;
public entries: LeaguePlayer[] = [];
所以,我想将这两个 observables 合二为一,我知道我需要使用 flatMap 来执行此操作,但我不知道如何执行此操作。 我试过了
getProfileWithLeagues(nickname: string, server: string): Observable<Profile> {
return this._http.get('http://localhost:3000/summoners?name='+ nickname + '&server=' + server)
.map(response => response.json().data as Profile)
.flatMap((profiles: Profile) => Observable.forkJoin(profiles.map((summoner: Profile) => {
return this.getLeagues(summoner.id, server)
.map((leagues: League) => {
summoner.leagues.from(leagues);
return summoner;
});
}))
);
}
但这不起作用。我做错了什么,我能做些什么来做我想做的事?谢谢大家:)
【问题讨论】:
-
你的意思是它不起作用?了解调试时所看到的内容会有所帮助。
-
@jonnysai's 是我要开始的地方。看来您从未订阅过可观察的平面图。 forkjoin 似乎没有必要。
-
这段代码只返回 de Profile,没有 de Leagues,我需要将这两个对象加入另一个对象
标签: angular reactjs rxjs observable