Rxjs为数组行为多次执行switchmap

时间:2017-11-26 18:13:51

标签: angular rxjs

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

代码以获得更好的解释:

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();
}

1 个答案:

答案 0 :(得分:1)

您可以使用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);
});

这将并行调用所有可观察量