FlatMap完成所有请求后进行处理

时间:2018-07-30 14:33:49

标签: angular rxjs

我正在Angular 6中使用RxJ 6.1.0从多个可观察对象获取数据,如下所示:

ngOnInit(){
 this.subscribeInit = this.tradingService.getInProgress()
  .do((s) => {
    this.keys = s.map((tdi)=> tdi.key);
    return this.keys;
  })
  .flatMap((key)=>this.tradingService.getTradingData(key))
  .subscribe((res)=>{        
    this.formattedData.push(res);
  });
}

我想在所有可观察对象都已完成从flatMap的执行之后进行处理,即所有数据都被推送到formattedData

请指导我知道如何实现此目标。谢谢。

1 个答案:

答案 0 :(得分:2)

您只需将complete处理程序添加到subscribe()

...
.subscribe(
  res => ...,
  undefined,
  () => /* completed */
)

您可以使用所谓的“部分观察者”对象:

...
.subscribe({
  next: res => ...,
  complete: () => /* completed */,
})