typescript - Returnere en promise-verdi i Angular 2, Ionic 2
Jeg gjør meg kjent med Angular2, Ionic2, og kanskje jeg misforstår noe, men håpet på hjelp.
Jeg har en leverandør kalt 'CurrentUser' for formålet med å lagre og hente LocalStorage-data.
getProfile(): any {
this.local.get("user-profile").then((profile) => {
var val = JSON.parse(profile);
return val;
});
}
denne funksjonen getProfile() returnerer et løfte
Hvis jeg injiserer denne leverandøren i en komponent. Hvordan ville jeg vente på at løftet skal bli oppfylt før jeg tildeler dataene når jeg kaller denne funksjonen fra komponenten?
@Component({
templateUrl: 'build/pages/book_meeting/book_meeting.html'
})
export class BookMeetingPage implements OnInit {
constructor(public navCtrl: NavController, private _currentUser: CurrentUser) {
}
profile: IProfile;
ngOnInit(): any {
this.profile = this._currentUser.getProfile();
console.log(this.profile);//returns undefined
}
}
Svar #1
Først må du returnere this.local.get("user-profile")-løftet fra getProfile-funksjonen slik at det kan kjedes når du kaller det. Deretter kan du hente dataene som returneres fra getProfile-funksjonen i .then-suksesskallbaken.
getProfile(): any {
return this.local.get("user-profile").then((profile) => {
var val = JSON.parse(profile);
return val;
});
);
I tillegg kan du ikke få data med en gang du gjør en ajax, ved suksess av den kan du få svaret
ngOnInit(): any {
this._currentUser.getProfile().then(
value => { console.log(value) }
)
}
Svar #2
Funksjonen din getProfile returnerer ikke et løfte. Den returnerer ingenting. Du bør endre den til
getProfile(): any {
return this.local.get("user-profile").then((profile) => {
var val = JSON.parse(profile);
return val;
});
Nå i komponenten din kan du hente ut dataene fra profil-«promise»-variabelen din.
ngOnInit(): any {
this._currentUser.getProfile().then(value => {
console.log(value); //returns your value.
}
