> Faqs > Esperar la respuesta de un HTTP en Angular

Esperar la respuesta de un HTTP en Angular

Hola,

estoy haciendo uan aplicación en Angular y quiero cargar el contenido JSON de una URL externa en mi programa.

desde el archivo home.components.ts hago la llamada al servicio:

  ngOnInit() {
    this.camp = this._homeService.getCamp();
    console.log (this.camp);
  }

Y el servicio ejecuta el codigo

getCamp() {
        this.http.get('http://url.com/cliente/json/prov_camp.php')
            .subscribe ( campERP => {
                  this.campX = campERP;
                  console.log(this.campX);
                  return this.campX;
                }
            )        
    }

El problema es que la respuesta del HTTP puede tardar unos 30 segundos en llegar y mientras ya se me carga toda la pagina, dando que this.camp del home.components.ts esta vacio, pero al cabo de un rato muestra el resutlado de this.campX del servicio (cuando ya ha cargado)

Como puedo hacer para que el programa se "espere" mientras esta cargando la info de la URL?

Gracias

Respuestas

Tenés que utilizar async / await y para eso la consulta debe estar en una promesa (promise)

Julio
0

Hola Xavi,

Sin tener mucho conocimiento del tema te paso dos enlaces que espero que te sirvan de ayuda

https://docs.angularjs.org/api/ng/service/$timeout

https://es.stackoverflow.com/questions/42612/esperar-tiempo-para-que-carguen-los-componentes-y-mostrar-pagina

Suerte :/

David
95 4 11
Hola, gracias, pero el timeout espera un tiempo definido y yo como es una consulta a una BBDD no se cuanto tiempo necesitara, ya que depende del tamaño de la respuesta. Seria algo parecido pero esperando a que finalizara la respuesta del server.