Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

216
Views
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?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

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

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

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);
over 4 years ago · Santiago Trujillo Report

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.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Virtual assistant