Actualmente estoy enfrentando un problema, cuando UserData se inyecta en mi otro componente, la función Load() siempre comenzará antes que getFromStorageAsync() dentro del constructor, por lo que ip_address siempre está indefinido.
el siguiente es mi código de servicio (UserData)
import { Injectable } from '@angular/core'; import { Http } from '@angular/http'; import { Storage } from '@ionic/storage'; import 'rxjs/add/operator/map'; /* Generated class for the UserData provider. See https://angular.io/docs/ts/latest/guide/dependency-injection.html for more info on providers and Angular 2 DI. */ @Injectable() export class UserData { public data: any; private ip_address: any; constructor(public http: Http, private storage: Storage) { this.data = null; this.ip_address = this.getFromStorageAsync() } async getFromStorageAsync(){ let val = await this.storage.get('ip_address'); this.ip_address = val.toPromise(); } load(): any { console.log(this.ip_address); if (this.data) { return Promise.resolve(this.data); } return new Promise(resolve => { this.http.get(this.ip_address + "/api/user") .map(res => res.json()) .subscribe(data => { this.data = data; resolve(this.data); }); }); } }no pudo obtener datos del servidor debido a una dirección IP indefinida. ¿Es la forma correcta de usar async y await? por favor ayuda. Gracias !
let storage = await storage.ready(); let val = await this.storage.get('ip_address'); this.ip_address = val.toPromise();