Поскольку, просто вызвав getEmprass()
, значение this.emprass
не будет обновлено. getEmprass()
немедленно вернется без обновления. Позже , когда http-запрос завершен, this.emprass
обновляется, но это после времени, когда вы напечатали его значение.
Многие вещи происходят в Javascript асинхронно. Observables и функция подписки - одна из них: ее содержимое будет выполняться асинхронно в будущем (аналогично обратным вызовам).
Вы можете изменить свой код на это:
constructor(...) {
this.getEmpresas();
console.log('hey, getEmpresas() finished!');
}
getEmpresas(){
this.empresas = [];
this.http.get("http://url").subscribe( data => {
this.empresas = JSON.parse(data["_body"]);
console.log(this.empresas[0]);//---------------------------> Print it here
}, err =>{
console.log(err);
});
}
Если вы хотите подождать в функции конструктора до завершения http-запроса, вам следует использовать асинхронную функцию .