【发布时间】:2018-02-13 13:35:54
【问题描述】:
在我的 Angular 2 应用程序中,我需要发出一系列 http 请求。我有两个服务,A 和 B,每个都发出请求,A.get() 和 B.get(),它们从 API 获取数据并将它们存储在他们的服务中。这两个可以同时调用,但是我有第三个请求doSomething(),这取决于A.get() 和B.get() 的结果。由于A.get() 和B.get() 都在本地存储它们的响应,它们的返回值最终是RxJs 订阅。像这样:
class A{
public data;
public get(){
return api.call(params).subscribe((response)=>{ this.data = response.json();})
}
}
class B{
public data;
public get(){
return api.call(params).subscribe((response)=>{ this.data = response.json();})
}
}
我的组件看起来像这样:
class MyComponent{
constructor(private a: A, private b: B){
a.get();
b.get();
this.doSomething(a.data, b.data);
}
doSomething(aData, bData){
...
}
}
我的问题是doSomething() 失败,因为a.get() 和b.get() 已经完成了http 请求。我需要一种方法来保持呼叫doSomething(),直到我的其他呼叫完成。我已经搜索了所有内容,但对这个问题没有任何运气。 RxJs 文档提供了几种可以合并 Observables 的方法,但这不是我在这种情况下所拥有的。
【问题讨论】: