rxjs com vários forkjoin ao fazer solicitações http
Estou fazendo algumas solicitações http e uso rxjs para obter uma notificação bem-sucedida do resultado:
getReportings(departmentId: number): Observable<any> {
return Observable.forkJoin(
this.http.get('/api/members/' + departmentId).map(res => res.json()),
this.http.get('/api/reports/' + departmentId).map(res => res.json())
);
}
Quando as duas solicitações http forem concluídas, desejo que dentro do método getReportings itere a matriz de relatórios, leia alguns valores e, para cada relatório, faça novamente uma nova solicitação http com esses valores.
Ao todo, tenho 2 (membro / relatórios) + aprox. 4 a 8 (outras coisas) solicitações.
Quando todos os aprox. 6 a 8 solicitações são concluídas. Quero obter TODOS os dados das 6 a 8 solicitações anteriores no manipulador bem-sucedido.
Como posso fazer isso com o rxjs?
ATUALIZAR
Como o usuário olsn pediu mais detalhes e eu o entendo agora, qual é a preocupação dele? Coloquei mais dados aqui (pseudo-código) como devem ser as solicitações de 6 a 8:
getReportings(departmentId: number): Observable<any> {
return Observable.forkJoin(
this.http.get('/api/members/' + departmentId).map(res => res.json()),
this.http.get('/api/reports/' + departmentId).map(res => res.json())
).switchMap((result: [any[], any[]]) => {
let members: any[] = result[0];
let reports: any[] = result[1];
let allNewStreams: Observable<any>[] = [
Observable.of(members),
Observable.of(reports)
];
for(let report of reports)
{
allNewStreams.push(
this.http.get(report.url + ?key1=report.name1?).map(res => res.json()));
}
return Observable.forkJoin(allNewStreams); // will contain members, reports + 4-6 other results in an array [members[], reports[], ...other stuff]
});
}