Неопределенная переменная при использовании API в Ionic

Я пытаюсь создать crud в Ionic, который одновременно использует Angular, поэтому проблема возникает, когда я использую API через HttpClient, и когда я сохраняю данные, я сохраняю их в переменной, но при печати в console.log он кажется неопределенным

Мой код в файле api-res.service.ts

  getEmpresa(){
    return this.http.get(`${this.url}/empresa`);
  }

код в файле home.page.ts

async cargarRegistro(){
  this.loading = await this.loadingCtrl.create({message: "Cargando..."});
  this.loading.present();
  this.service.getEmpresa().subscribe(result =>{
    this.arrayEmpresa = result;
  });

  console.log(this.arrayEmpresa);


}

, и я загружаю его в метод ngOnInit

ngOnInit() {
  this.cargarMapa();
}

проблема возникает, когда я хочу получить данные массива массива, поэтому он возвращает меня бесконечно. Я объявляю эту переменную наверх как глобальную или просто помещаю arrayCompany и все. Но я не знаю, почему вы не возвращаете данные результата в значение, какое-либо решение?

0
задан 30.11.2019, 02:24
1 ответ

subscribe одна operaciГіn асинхронная и загружает твою переменную this.arrayEmpresas в другом моменте после console.log

Ты cГіdigo должна оставаться asГ -


async cargarRegistro(){
  this.loading = await this.loadingCtrl.create({message: "Cargando..."});
  this.loading.present();
  this.service.getEmpresa().subscribe(result =>{
    //Esto se ejecuta despues
    this.arrayEmpresa = result;
    //
     console.log(this.arrayEmpresa); //<=== Dentro del subscribe



  });

 //Esto se ejecuta primero
 //...mas codigo...

}

Операции asГ-ncronas пошли ты начинаешь для того, чтобы она aplicaciГіn он не заморозился в течение нее ejecuciГіn тех же самых. Угловой эта diseГ±ado, чтобы работать таким образом asГ - что, когда он обнаружит изменение в this.arraEmpresa, это покажет способа automГЎtica.

Другой способ это решать состоит в том, чтобы ты поместил await перед твоей операцией как ты это делаешь с this.loading


async cargarRegistro(){
  this.loading = await this.loadingCtrl.create({message: "Cargando..."});
  this.loading.present();
  this.arrayEmpresa = await this.service.getEmpresa()

  console.log(this.arrayEmpresa); //<=== Así si funciona




 //Esto se ejecuta despues
 //...mas código...

}
0
ответ дан 01.12.2019, 10:33
  • 1
    Ты имеешь razó n, console, log внутри susbcribe функционирует, но когда я хочу использовать this, arrayEmpresa для другой operació n, как deberí чтобы быть? поскольку он сделал бы для того, чтобы другая линия кода смогла получать данные arrayEmpresa, если этот в ожидании изменения как menionaste автоматического способа – Luis Hernandez 30.11.2019, 20:14
  • 2
    Он automá костариканский. Угловой он берется за то, чтобы освежать твой вид. Только используй ее dó nde нуждайся в ней или помести всю ló gica в subscribe (Если ее не является слишком много) – Angel 30.11.2019, 21:51
  • 3
    Я имею в виду использовать ее внутри файла .ts не в виде, так как, после получая этот arrayEmpresa, он нуждался в том, чтобы переместить это как параметр в методы google google.maps. LatLng (....), но меня помечает ошибка, потому что данные даже не загружаются в arrayEmpresa – Luis Hernandez 01.12.2019, 05:50

Теги

Похожие вопросы