我熟悉Angular2,Ionic2和 也许我误解了一些事情,但希望得到帮助。
我有一个名为' CurrentUser'用于存储和获取LocalStorage数据。
getProfile(): any {
this.local.get("user-profile").then((profile) => {
var val = JSON.parse(profile);
return val;
});
}
此函数getProfile()
返回一个承诺
如果我将此提供程序注入组件中。在从组件调用此函数时,如何在分配数据之前等待解析的承诺?。
@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
}
}
答案 0 :(得分:9)
首先,您必须从this.local.get("user-profile")
函数返回getProfile
承诺,以便在您致电时链接。此后,您可以在getProfile
成功回调中获取从.then
函数返回的数据。
getProfile(): any {
return this.local.get("user-profile").then((profile) => {
var val = JSON.parse(profile);
return val;
});
);
此外,一旦你制作ajax就无法获取数据,成功后你就可以获得响应
ngOnInit(): any {
this._currentUser.getProfile().then(
value => { console.log(value) }
)
}
答案 1 :(得分:0)
你的函数getProfile没有返回一个promise。它什么都不返回。 你应该把它改成
getProfile(): any {
return this.local.get("user-profile").then((profile) => {
var val = JSON.parse(profile);
return val;
});
现在,在您的组件中,您可以从配置文件承诺变量中提取数据。
ngOnInit(): any {
this._currentUser.getProfile().then(value => {
console.log(value); //returns your value.
}