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

193
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 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