rxjs с несколькими форкьюнами при выполнении http-запросов
Я делаю несколько запросов http и использую rxjs для успешного уведомления о результате:
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())
);
}
Когда оба http-запроса выполнены, я хочу, чтобы внутри метода getReportings выполнялся итерация массива отчетов, считывался несколько значений и для каждого отчета снова создавался новый http-запрос с этими значениями.
Всего у меня 2 (член / отчеты) + ок. От 4 до 8 (другие вещи) запросы.
Когда все ок. Выполнено от 6 до 8 запросов. Я хочу получить ВСЕ данные из предыдущих 6–8 запросов в успешном обработчике.
Как я могу сделать это с rxjs?
ОБНОВИТЬ
Поскольку пользователь olsn попросил более подробную информацию, и теперь я понимаю его, в чем его забота, я разместил здесь больше данных (псевдокод) как должны выглядеть запросы от 6 до 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]
});
}