Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

208
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda