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不用担心,很高兴我能帮上忙!