RXJS多次执行switchmap以实现数组行为



基本上我想做的是例如获取所有书籍的作者,然后为每个作者获取所有书籍。我找不到操作员。

更好的解释代码:

this.actividadService.getActividades()
.switchMap((result) => {
  const actividadUno = result[0];
  console.log(result);
  if (actividadUno) {
    for(let actividad of result){
      console.log('actividad = ');
      console.log(actividad);
      return this.actividadFechasFinalService.getActividadByIDYear(actividad.ID, actividad.Anio).catch(this.handleError);
    }
  } else {
    return Observable.of('No results');
  }
},
(actividades, actividadesFechas)=>[actividades, actividadesFechas])
.subscribe(actividades => this.arregloActividadesFlatMap = actividades);

问题是SwitchMap仅返回数组上的第一个项目

这是我的服务返回的:

getActividades(): Observable<ActividadPlaneacion[]>{
   return this.actividadesSubject.asObservable();
}

您可以使用forkjoin方法。首先构建所有可观察到的数组,然后用forkjoin致电。

.switchMap((result) => {
    // make array of observables
    let books = result.map(actividad => this.actividadFechasFinalService.getActividadByIDYear(actividad.ID, actividad.Anio).catch(this.handleError));
    return Observable.forkJoin(...books);
});

这将在并行

中调用所有可观察到的物品

最新更新