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

188
Vistas
Llamada API secuencial usando Rxjs en Angular con retorno nulo

Tengo un escenario en el que necesito hacer una llamada API secuencial usando RxJs en Angular , lo cual hice pero me encuentro con este error nulo. Para llamar a la segunda API, recibiré una id de la primera API, que puede ser null o undefined . Entonces, lo que quería Si si la identificación no está disponible, regresaré of(null) , de lo contrario, devolveré la respuesta. Pero hay algún error mecanografiado. Lo siguiente es lo que he hecho hasta ahora.

 of(personId).pipe( take(1), switchMap((personId: string) => { return this.personService.getById(personId).pipe( concatMap((person: Person) => { const classId = person?.class?.id || null; let class$ = of(null); if (classId) { class$ = this.classService.getById(classId); // Will return Observable<Class> } return combineLatest([of(person), class$]) }) ) }), tap(([person, class]) => { console.log('Person: ', person); console.log('Clas: ', class); }) ).subscribe()

class$ = this.classService.getById(classId);

En esta línea estoy frente al 'TS2322: Observable is not asignable to Observable'

¿Alguna sugerencia de cómo resuelvo esto? También se puede mejorar este código?

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

simplemente puede reemplazar la lógica condicional con esta línea

 let class$= classId?this.classService.getById(classId):of(null)
about 4 years ago · Santiago Trujillo Denunciar

0

El observable que devuelve this.classService.getById es diferente al que devuelve of(null) , por lo tanto, no puede reasignar la variable class$ con él.

Sin embargo, su problema se puede superar fácilmente simplemente usando un operador ternario para definir class$ de la siguiente manera:

 const class$ = person?.class?.id ? this.classService.getById(classId) : of(null);
about 4 years ago · Santiago Trujillo Denunciar

0

En primer lugar, esto of(personId) parece extraño.

Por que no:

 this.personService.getById(personId).pipe( concatMap((person: Person) => { const class$ = person?.class?.id ? this.classService.getById(person?.class?.id) : of(null); return combineLatest([of(person), class$]); }) ).subscribe(/*...*/);

El error TS2322: Observable is not assignable to Observable , creo que se describe a sí mismo.

about 4 years ago · Santiago Trujillo 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