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

501
Visualizações
Angular 12/Typescript/rxjs: manejo de errores de Promesas anidadas y rxjs Observable

Tengo una combinación de Promesas anidadas y suscripciones, y simplemente quiero hacer lo siguiente:

  • Llame a mi barra de funciones () y comprenda si fue completamente exitoso o si ocurrió un error

enfoque actual: Actualmente, mi bar () devuelve un Observable booleano, y manejo cada error por separado, para Promise a través de .catch, para el Observable rxjs a través del controlador de error:

 foo(): void { this.bar.subscribe((data: boolean) => console.log('the function call bar() was ' + data)); } bar(): Observable<boolean> { let subject = new Subject<boolean>(); this.httpHandler.newFoo().subscribe( (data) => this.bar(data) .then((barData) => this.httpHandler.updateBar().subscribe( (barData2) => subject.next(true), (error) => subject.next(false))) .catch(err => subject.next(false)), (error) => subject.next(false)); return subject.asObservable(); }

Aparentemente, esto es complicado y parece una exageración con el simple propósito de comprender si la llamada a la función bar() finalizó sin errores. ¿Hay una mejor manera de manejar los errores anidados por completo?

Gracias por adelantado

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Creo que esto podría escribirse sucintamente como:

 this.httpHandler.newFoo().pipe( switchMap(data => from(this.bar(data)).pipe( switchMap(() => this.httpHandler.updateBar().pipe( mapTo(true) ) ) ) ), catchError(() => of(false)) )

Para convertir una promesa en un observable, usa from() . Use switchMap() para hacer la transición entre los observables. Entonces solo es cuestión de encadenar tus llamadas:

this.httpHandler.newFoo() -> this.bar() -> this.httpHandler.updateBar()

y devolviendo true al final, de lo contrario, false por cualquier error.

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