¿Cuál es la forma en RxJS de seguir recopilando resultados de múltiples y diferentes llamadas http independientemente de cuándo falla una de ellas?

He usado zip y forkÚnete

return forkJoin({
  a: this.getA(),
  b: this.getB(),
  c: this.getC()
})

el problema es que si una de esas llamadas falla, todas las llamadas se cancelan, mientras que me gustaría recopilar datos de las que no fallaron. ¿Hacerlas por separado es la única forma de hacerlo?

Answer

Para resolver su problema, debe detectar el error y tratarlo correctamente en el observable interno

return forkJoin({
  a: this.getA(),
  b: this.getB(),
  c: this.getC().pipe(catchError(error => of(error)))
})

// If getC fails, you would get A and B

Mi duda es si hay que añadir este tratamiento solo al último elemento oa todos. Tendrás que probarlo tú mismo, por favor házmelo saber en los comentarios.

Vea AQUÍ el Ejemplo 5: Obtener resultados exitosos cuando un error observable interno