Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular Rxjs为一个数组行为多次执行开关映射_Angular_Rxjs - Fatal编程技术网

Angular Rxjs为一个数组行为多次执行开关映射

Angular Rxjs为一个数组行为多次执行开关映射,angular,rxjs,Angular,Rxjs,基本上,我想做的是,例如,获取所有书籍的作者,然后获取每个作者的所有书籍。我找不到接线员 更好解释的代码: this.actividadService.getActividades() .switchMap((result) => { const actividadUno = result[0]; console.log(result); if (actividadUno) { for(let actividad of result){ console.l

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

更好解释的代码:

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();
}
getActividades():可观察{
返回此.actividadesSubject.asObservable();
}
您可以使用该方法。首先构建一个包含所有可观察对象的数组,然后使用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);
});

这将并行调用所有可观察对象

,非常感谢!这是正确的答案,但因为我的声誉,它不会得票。@DaríoVillalta不用担心,很高兴我能帮上忙!