在 Angular 2、Ionic 2 中返回一个承诺值
Posted
技术标签:
【中文标题】在 Angular 2、Ionic 2 中返回一个承诺值【英文标题】:Returning a promise value in Angular 2, Ionic 2 【发布时间】:2017-02-08 20:59:59 【问题描述】:我正在熟悉 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
【问题讨论】:
【参考方案1】:首先,您必须从getProfile
函数返回this.local.get("user-profile")
promise,以便在您调用时它可以链接。此后,您可以在.then
成功回调中获取从getProfile
函数返回的数据。
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)
)
【讨论】:
您好,我收到错误 app.bundle.js:44529 例外:错误:未捕获(承诺中):TypeError:无法读取未定义的属性“then”。 @Arianule 抱歉,我在回答中提到了,但忘了在代码部分更改相同的内容,我的错。感谢您的提醒。检查更新的代码 你好,Pankaj。你更新代码了吗,抱歉。我应该返回一个 Promise...类似于 return Promise.resolve(val) 的东西吗? @Arianule 我把这里的this.local.get("user-profile")
改成了return this.local.get("user-profile")
啊啊,抱歉,现在我明白了。对不起...漫长的一天:-)【参考方案2】:
您的函数 getProfile 没有返回承诺。它什么也不返回。 你应该把它改成
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.
【讨论】:
以上是关于在 Angular 2、Ionic 2 中返回一个承诺值的主要内容,如果未能解决你的问题,请参考以下文章