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

156
Visualizações
¿Cómo puedo combinar 2 observables que devuelvan un evento de resultado exitoso si uno de ellos falló?

Quiero suscribirme a dos métodos observables, pero uno puede recibir un error y el segundo puede tener éxito. Pero cuando trato de hacerlo, solo obtengo un evento de error si uno de ellos devuelve el éxito

cuando estoy usando combineLatest solo obtengo un error incluso si el primero es exitoso

 combineLatest( this.createTable1(), this.createTable2() ).pipe(untilDestroyed(this)) .subscribe(() => { alert('suceess'); }, (error) => { alert('error'); });

cuando me gusta lo siguiente, solo funciona si falla el segundo, si falla el primero, no recibí una alerta de éxito:

 this.createTable1().pipe(untilDestroyed(this)).subscribe( () => { alert('1suceess'); this.createTable2().pipe(untilDestroyed(this)).subscribe( () => { alert('2suceess'); }, () => { alert('error'); }); }, () => { alert('error'); });

¿Cómo puedo arreglarlo?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Creo que su problema es que RxJS completa la transmisión una vez que se detecta un error antes de obtener el valor del otro, por lo que debe manejar los errores en cada transmisión y volver a convertirlos en observables.

 combineLatest( this.createTable1().pipe(catchError(() => of('Errored'))), this.createTable2().pipe(catchError(() => of('Errored'))) ).pipe(untilDestroyed(this)) .subscribe(() => { alert('suceess'); }, (error) => { alert('error'); });

Esto debería funcionar. Yo mismo no sabía esto, lo probé en este StackBlitz: https://stackblitz.com/edit/rxjs-xzdtpn?devtoolsheight=60&file=index.ts

Verá si comenta la línea 9, nunca llegaremos a conocer el observable posterior.

EDITAR: estoy agregando una versión diferente en caso de que no le importe saber si uno de los observables falló:

 merge( this.createTable1().pipe(catchError(() => EMPTY)), this.createTable2().pipe(catchError(() => EMPTY)) ).pipe(untilDestroyed(this)) .subscribe(() => { alert('suceess'); }, (error) => { alert('error'); });
about 4 years ago · Juan Pablo Isaza 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