Angular2 - 嵌套的http请求

时间:2016-08-02 05:05:21

标签: http angular observable

我有一些看起来像这样的组件代码:

private myThing: MyThing;

ngOnInit() {
    this.service.getMyThing().subscribe(thing => {
        this.myThing = thing;
    }
}

但是,服务看起来像这样 - 它由两个http请求连接的数据组成。第一个来自" otherService",它为thing对象获取一个附加属性,第二个调用获取基础thing对象。我希望结合这些结果,并在所有操作完成后提醒用户,即this.myThing应该有" .prop"属性...

public getMyThing(): Observable<MyThing> {
    this.otherService.getThingProperty().subscribe(prop => {
         return this.http.get('url')
             .map(res => res.json())
             .map(thing => {
                 thing.prop = prop;
             });
    });
}

但这显然是错误的 - 函数认为它是无效的,这是有道理的......我只是不知道如何让组件订阅最终的observable。任何提示都表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:1)

尝试switchMap

public getMyThing(): Observable<MyThing> {
  return this.otherService.getThingProperty().switchMap(prop => {
     return this.http.get('url')
         .map(res => res.json())
         .map(thing => {
             thing.prop = prop;
         });
  });
}