我是Ionic 2和Promises的新手,并且遇到了一些问题。
我的Ionic 2应用程序将auth_token保存到本地存储:
this.storage.set('auth_token', auth_token);
然后在我的安全组件中,我想检查是否设置了令牌,但我不知道如何执行此操作。
我试过了:
authenticate() {
var auth_token = this.storage.get('auth_token').then((val) => {
return val;
});
}
然后从其他地方打来电话:
console.log(this.auth.authenticate);
但它不会起作用,只会返回功能本身。
如何从我的身份验证方法返回令牌?
答案 0 :(得分:4)
检查here是否有承诺链接。
在authenticate()
函数中返回原始承诺调用,然后在其他位置的函数中使用
authenticate() {
return this.storage.get('auth_token').then((val) => {
return val;
});
}
在进行身份验证时......
this.auth.authenticate().then((val)=>{
console.log(val);
}).catch(error=>{
//handle error
});
答案 1 :(得分:1)
您只想检查或是否需要退货?
如果只是检查你可以这样做:
authenticate() {
this.storage.get('auth_token').then((val) => {
if(val){ ... } // or console.log it if it's just what you need.
}
}
如果您需要返回,请创建一个这样的承诺:
authenticate = (): Promise<{exists: boolean, auth: any}> =>{
return new Promise<{exists: boolean, auth: any}>(res =>{
this.storage.get('auth_token').then((val) => {
if(val){
res({exists: true, auth: val});
} else {
res({exists: false, auth: val});
}
}
})
}
然后调用authenticate().then(res =>{})
并访问res。
由Suraj评论并现在进行测试,它不需要封装在新的承诺中,所以如果你需要返回它,只需使用Suraj建议的方法。