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

442
Visualizações
Angular TypeScript - Async await en suscripción interna

Tengo una función como esta;

 openModalWhenRemoveItem() { callRemoveService(); openMyModal(); }

La función callRemoveService() tiene una función de suscripción y asíncrona, la función openMyModal() debe invocarse después de callRemoteService()

 callRemoveService() { combineLatest(myAccountSelector$, myCompanySelector$).pipe( switchMap(res) => this.myService.remove(res[0].id, res[1].id)) .subscribe((res)=> console.log(res)) }

Necesito crear una función que tenga que esperar la suscripción interna en callRemoveService() antes de llamar a openModal() . Quiero probar con async await pero no puedo encontrar una solución. Probé de esta manera:

 async callRemoveService() { await combineLatest(myAccountSelector$, myCompanySelector$).pipe( switchMap(res) => this.myService.remove(res[0].id, res[1].id)) .subscribe((res)=> console.log(res)) } openModalWhenRemoveItem() { callRemoveService().then(() => {openMyModal();}); }

pero no funciona No puedo poner la función openMyModal() en suscripción.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

La solución en su caso sería devolver el Observable desde el método callRemoveService en lugar de suscribirse a él. La advertencia con este enfoque es que debe llamar a subscribe en todos los lugares donde llama a callRemoveService .

Si haces eso, entonces es trivial:

 callRemoveService(): Observable<any> { return combineLatest(myAccountSelector$, myCompanySelector$).pipe( switchMap(res) => this.myService.remove(res[0].id, res[1].id)); }

Entonces su método openModalWhenRemoveItem se convierte en esto:

 openModalWhenRemoveItem() { callRemoveService().subscribe(() => { openMyModal(); }; }
about 4 years ago · Juan Pablo Isaza Relatório

0

combineLatest es un operador RxJS, devuelve un Observable. No puedes simplemente esperar un Observable, no es una Promesa. Simplemente suscríbase a él.

 callRemoveService(): Observable<any> { return combineLatest(myAccountSelector$, myCompanySelector$); }

y entonces :

 openModalWhenRemoveItem() { callRemoveService().subscribe(openMyModal); }

Alternativamente, puede transformar su Observable en Promise usando el operador lastValueFrom y esperarlo:

 callRemoveService(): Promise<any> { return lastValueFrom( combineLatest(myAccountSelector$, myCompanySelector$)) ; } async openModalWhenRemoveItem() { await callRemoveService(); openMyModal(); }
about 4 years ago · Juan Pablo Isaza 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