Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

209
Views
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 }); });
over 4 years ago · Santiago Trujillo
1 answers
Answer question

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.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!