我想异步发出几个HTTP请求,然后将所有响应组合到一个数组中。
如下所示:
getSamples(genes) {
genes.forEach(gene => {
//This is the HTTP get request from other service which returns an observable array
this.vsal.getSamples(gene).subscribe(sampleRequest => {
//I want to join all the responses into sampleIdsSource
this.sampleIdsSource.next(sampleRequest.samples);
},
e => {
this.error.next(e);
})
});
}
Run Code Online (Sandbox Code Playgroud)
最好的方法是什么?
只需将它们gene变成一个Observable,然后将forkJoin它们变为。forkJoin将等到所有源Observable完成,并发出带有结果的单个数组。
getSamples(genes) {
const observables = genes.map(gene => this.vsal.getSamples(gene));
return forkJoin(observable);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45 次 |
| 最近记录: |