J'effectue un premier appel à gitlab Api qui renvoie tous les projets étoilés. Une fois terminé, je souhaite récupérer tous les jalons associés à chaque projet afin de les ajouter à un objet de projet personnalisé, puis de les stocker quelque part.rxjs angular - fractionne le retour d'un observable avec résultat foreach et merge
Y at-il un opérateur rxjs qui me permet de faire un appel HTTP forEach et d'attendre que tous les appels se terminent et fusionnent le résultat en un?
getStarredProjects$(): Observable<GitlabProject[]> {
return this.http.get(this.starredProjectsUrl).map((res: GitlabProject[]) => {
res.forEach((project:GitlabProject)=>{
this.getMileStones(project.id).subscribe()
})
return res
})
}
getMileStones(projectId:number){
return this.http.get(`${this.projectUrl}/${projectId}/milestones`)
}
'forkJoin' acceptera un seul paramètre qui est [un tableau des observables] (https://github.com/ReactiveX/rxjs/blob/5.4.3/src/observable/ForkJoinObservable.ts#L34-L37). Cependant, comme vous, je préfère utiliser la syntaxe spread, car elle est cohérente entre les opérateurs. Par exemple. vous ne pouvez pas passer un tableau d'observables 'concat', car il serait traité comme un' ObservableInput'. – cartant
@cartant c'est un bon point. J'ai mis à jour ma réponse pour refléter cela. – LLai