使用Observable进行两次同步http调用

时间:2016-07-15 12:13:31

标签: javascript angular rxjs

我在Angluar2 app中遇到了Observables的问题。假设我需要进行两次单独的http调用。一个电话直接取决于另一个电话的结果。代码如下所示:

this.http.get('http://kalafior/group/'+id)
    .map(res => res.json())
    .subscribe(group => {
        //url depends on previous call result
        this.http.get('http://kalafior/group/'+group.id+'/posts')
            .map(res => res.json())
            .subscribe((res) => {
                console.log(res);
            });
    });

我想摆脱嵌套的subscribe()调用。

2 个答案:

答案 0 :(得分:3)

flatMap是为这种情况创建的。

this.http.get('http://kalafior/group/'+id)
    .map(res => res.json())
    .flatMap(group => this.http.get('http://kalafior/group/'+group.id+'/posts') )
    .map(res => res.json())
    .subscribe((res) => {
       console.log(res);
    });
});

答案 1 :(得分:-1)

您可以做的是利用Rxjs中的.do()函数。看看here