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

120
Vistas
No devuelva valor con observable, desde la capa de servicio hasta el componente

Estoy tratando de pasar el retorno de una capa de servicio con sujeción a los componentes.

Mi servicio que se conecta con api:

 public getPerfilNew$(): Observable<PerfilInvestidor> { return this.http.get<PerfilInvestidor>(`${environment.api.basePosicaoConsolidada}/consolidado`) .pipe( map(res => res), shareReplay(1), catchError(err => { console.log('Error in perfil', err); return throwError(err); }) ) } public getPositionConsolidated(): Observable<PosicaoConsolidada> { return this.http.get<PosicaoConsolidada>(`${environment.api.basePosicaoConsolidada}/consolidado`) .pipe( map(res => res), shareReplay(1), catchError(err => { console.log('Error investiments', err); return throwError(err); }) ) }

En mi componente: lo probé

 public loadData() { //find out if the profile failed or no this.homeGuardService.getPerfilNew$.pipe( takeUntil(this.unsubscribe) ).subscribe(res => { this.perfilInvestidor = res; this.perfilFailed = this.perfilInvestidor.status ? true : false; console.log('perfil is failed --->', this.perfilFailed) }) //checking for investments this.homeGuardService.getPositionConsolidated().subscribe(res => { this.positionConsolidated = res if (this.positionConsolidated) { this.investments = true } }); this.isEverthingFailed = !this.investments && this.perfilFailed }

Necesito valores de suscripción externos para que coincidan en mi variable isEverthingFailed teria que utilizar subject? ¿Sujeto de comportamiento? Porque de esa manera la variable inversiones y perfilFailed es indefinida

Con esa cantidad de observables comprometo la memoria? estoy abierto a sugerencias

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Puede usar forkJoin o combineLatest para obtener ambas transmisiones y suscribirse a ellas:

 public loadData() { forkJoin([this.homeGuardService.getPerfilNew$(), this.homeGuardService.getPositionConsolidated()]) .subscribe(([perfile, position]) => { this.perfilInvestidor = perfile; this.perfilFailed = this.perfilInvestidor.status ? true : false; console.log('perfil is failed --->', this.perfilFailed) this.positionConsolidated = position if (this.positionConsolidated) { this.investments = true } this.isEverthingFailed = !this.investments && this.perfilFailed }) ) }
about 4 years ago · Juan Pablo Isaza Denunciar

0

1. Preguntas

No hay suficiente código aquí para ver exactamente lo que está sucediendo. Pero a primera vista parece una condición de carrera desde mi punto de vista:

Tienes que darte cuenta de cómo funciona el Sujeto.

 const sub = new Subject(); sub.next(1); // If you subscribe here like: sub.subscribe(a => console.log(a)) // Nothing will happen because Subject does not preserve the old values

Pero si haces esto:

 const sub = new Subject(); // If you subscribe here like: sub.subscribe(a => console.log(a)) sub.next(1); // You will get a print in a console since you emitted the value after you subscribed on the stream.

En su caso, parece que se está suscribiendo a un tema tras otro ya valores emitidos.

También:

 this.perfilClient$.subscribe(res => {

¿Se está suscribiendo a this.perfilClient$, pero no veo dónde está emitiendo valores en ese flujo?

Entonces, si no puede sincronizar cosas a las que se suscribe con el Sujeto antes de que emita el valor, puede usar ReplaySubject o BehaviourSubject

2. Preguntas Tienes solo unos pocos observables, no es mucho. Pero hay algunos antipatrones como:

  1. Suscripción anidada
  2. La función de devolución de llamada de suscripción está vacía, etc.

Lo principal en RXJs es evitar los efectos secundarios tanto como sea posible.

about 4 years ago · Juan Pablo Isaza 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