https://www.learnrxjs.io/learn-rxjs/operators/combination/forkjoin
const example = forkJoin({ // emit 'Hello' immediately sourceOne: of('Hello'), // emit 'World' after 1 second sourceTwo: of('World').pipe(delay(1000)), // throw error sourceThree: throwError('This will error') }).pipe(catchError(error => of(error))); // output: 'This will Error' const subscribe = example.subscribe(val => console.log(val)); Esa es la implementación principal, pero en mi caso, para llamar a sourceTwo , necesito usar los datos de sourceOne y lo mismo con sourceThree . Todas las llamadas necesitan el observable anterior para obtener datos.
Solo me importa el resultado final, no necesito fusionar nada, solo haga lo que hace este ejemplo, muestre lo que devuelve sourceThree
forkJoin está diseñado para ejecutar llamadas en paralelo , como Promise.all() . En tu caso, no puedes hacer eso ya que las llamadas dependen unas de otras.
En su lugar, puede canalizarlos . Si puede paralelizar 2 y 3, puede hacer algo como lo siguiente.
sourceOne.pipe( res => forkJoin(makeCall2(res), makeCall3(res)) )Para completar la comparación de Promise:
makeCall().then(res => Promise.all([ makeCall2(res), makeCall3(res) ]));