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

835
Visualizações
Angular: suscriba datos a rendimientos observables indefinidos

Estoy trabajando en un proyecto angular. pero tengo un problema cuando suscribo los datos a observable está volviendo indefinido

y tengo un método de servicio que devuelve datos de HTTP.

 public serviceMethod(): Observable<WordList[]> { const url = `${this.baseUrl}/wordLists`; return this.httpClient.get<GetResponseWordList>(url).pipe( map(response => response._embedded.wordLists) ); }

y un método de componente que toma los datos del servicio y los asigna a una "matriz"

 componentMethod() { // get from the service this.otherService.serviceMethod().subscribe( data => { this.array = data; } ); }

Tengo otro método en el mismo archivo que usa la "matriz"

 secondMethod(){ console.log(this.array) }

Finalmente, tengo el método principal que usa los dos últimos métodos.

 mainMethodMethod(){ componentMethod(); secondMethod(); }

el componenteMethod() se ejecuta primero. Sin embargo, siempre obtenga un valor "indefinido" de la matriz

una solución es poner secondMethod() dentro de componentMethod() cuando se suscriben los datos. Pero no quiero hacer eso porque necesito usar un bucle y eso llevará demasiado tiempo.

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

0

Debe llamar a su segundo método en la función de suscripción después de la variable de datos.

Se vuelve indefinido ya que es asíncrono, tiene que esperar a que los datos terminen de cargarse y luego llamar a sus próximas funciones.

Si lo llama después del primer método, el segundo método se ejecutará sin el primero

about 4 years ago · Juan Pablo Isaza Relatório

0

Creo que deberías aclarar esta parte de tu pregunta:

"Pero no quiero hacer eso porque necesito usar un bucle y eso llevará demasiado tiempo"

¿Cuál es el bucle que necesitas usar? Porque es la restricción la que tal vez sea la base del problema...

Con lo que explicaste, veo (al menos) esta solución:

 componentMethod() { // get from the service return this.otherService.serviceMethod().pipe( map(data => { this.array = data; }) ); } mainMethodMethod(){ componentMethod().subscribe(() => { secondMethod(); }) }
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