Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

205
Vistas
Evitar suscripciones anidadas con combinar lo último cuando un observable depende del resultado de otro

Tengo tres observables que me gustaría combinar en una sola transmisión. Sin embargo, el tercer observable requiere una propiedad del primer observable: ¿es posible combinar los tres para evitar suscripciones anidadas (en aras de la claridad)?

 Observable.combineLatest(this.fooService.model, this.barService.model) .subscribe(result => { //do work this.bazService.anotherObservable(result[0].someProperty) .subscribe(anotherResult => { //do more work }); });
about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Puedes usar switchMap y map para hacer lo que quieras:

 Observable .combineLatest(this.fooService.model, this.barService.model) .switchMap(([foo, bar]) => { return bazService .anotherObservable(foo.someProperty) .map((baz) => [foo, bar, baz]); }) .subscribe(([foo, bar, baz]) => console.log(foo, bar, baz));

Siempre que los observables foo y bar combinados emitan un valor, se llamará al servicio baz y su resultado se combinará aún más.

Tenga en cuenta que switchMap abandonará las llamadas baz pendientes si se vuelven a emitir los observables foo o bar . Si no desea ese comportamiento y siempre desea que se emita el resultado baz , use concatMap en lugar de switchMap .

Otra opción es usar mergeMap en lugar de concatMap ; este último garantizará que se conservará el orden de las llamadas baz , el primero no.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda