Tengo el siguiente código:
export class Whatever implements OnInitn{ prices; ngOnInit(){ this.CoinPricesService.getPrices().subscribe( pricesFromResponse => { this.prices = pricesFromResponse; console.log('this is what I get from the api: ', this.prices); } ); console.log('this is my prices class object', this.prices); } }la salida es esta:
este es mi objeto de clase de precios indefinido
api: esto es lo que obtengo del $, $$
como pueden ver el primer mensaje se muestra en segundo y el segundo en primer lugar con un UNDEFINED, obviamente lo que pasa es que el código no está esperando a que llegue la respuesta, está siendo sincrónico, ¿POR QUÉ? no es observable.Subscribe(response ==> this.myVar = response); destinado a encargarse de eso? No puedo usar los datos en otros lugares de mi clase porque siempre está indefinido cuando los códigos llegan allí, por favor ayuda.
Mi servicio se ve así:
@Injectable({ providedIn: 'root' }) export class CoinPricesService { private apiURl = 'https://api.forprices/blablabla'; constructor(private http: HttpClient) { } getPrices(){ return this.http.get<any>(this.apiURl); } }Si tuviera una función que dependiera del precio, entonces podría ejecutar las funciones dentro de la suscripción. algo como esto:
export class Whatever implements OnInitn{ prices; ngOnInit(){ this.CoinPricesService.getPrices().subscribe( pricesFromResponse => { this.prices = pricesFromResponse; console.log('this is what I get from the api: ', this.prices); someFunction(pricesFromResponse) } ); } someFunction(prices){//use price ...} }