• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

142
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 3 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 3 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 3 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 3 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda