如何从存储中检索价值并在Ionic 2中的其他地方使用它

时间:2017-02-09 11:24:16

标签: ionic-framework local-storage ionic2

我是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);

但它不会起作用,只会返回功能本身。

如何从我的身份验证方法返回令牌?

2 个答案:

答案 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建议的方法。