我在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()调用。
答案 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