Используйте siwtchMap
и forkJoin
:
this.subscription = this.quoteService.get(this.quoteid).pipe(
switchMap(response => forkJoin(
of(response),
this.faultService.get(response.quote.deviceid),
this.deviceService.get(response.quote.deviceid),
))
).subscribe(([res1, res2, res3]) => { ... });
forkJoin
объединяет результаты холодных наблюдаемых (то есть наблюдаемых, которые больше не излучают значений).
EDIT
Чтобы управлять некоторой логикой для одного вызова, вы можете использовать tap
:
this.subscription = this.quoteService.get(this.quoteid).pipe(
tap(response => { /* execute some code with your first HTTP call response */ }),
switchMap(response => forkJoin(
of(response),
this.faultService.get(response.quote.deviceid),
this.deviceService.get(response.quote.deviceid),
))
).subscribe(([res1, res2, res3]) => { ... });