【问题标题】:Ionic 3 Storage Issue Not Working in BrowserIonic 3 存储问题在浏览器中不起作用
【发布时间】:2019-03-01 17:13:12
【问题描述】:

好的,我要扯掉我的头发(剩下的)。每当我在清除所有 cookie/存储项目后从头开始启动应用程序时,我都会检查某些项目......从而查看此人是否已登录或未登录应用程序。

让他们通过 firebase 登录(成功)后,它返回到应用程序,然后我们在其中设置 UID 并为我们的 API 调用获取 google 令牌。所有值均已确认并正在成功检索。

我们通过存储服务提供商设置这些。一旦设置好这些,我们就会尝试从我们的 API 调用一些东西,这需要 google 令牌。当我们尝试从存储中检索它时,它不存在。但是,如果我只是在调试/应用程序选项卡中刷新我的浏览器(不清除 cookie/etc),那么神奇的是 localdb 值就在那里,现在一切正常。

这里是存储提供者:

@Injectable()
export class StorageProvider {
constructor(public http: HttpClient, public storage: Storage) {
console.log('Hello StorageProvider Provider');
}
public set(settingName,value):Promise<any>{

return this.storage.ready().then(() => {
  this.storage.set(`setting:${ settingName }`,value).then(() => {
    Promise.resolve(true);
  })
  .catch(err => {
    Promise.reject(err);
  })
})
.catch(err => {
  console.log("ERROR Storage Not Ready: " + err);

})
} public async get(settingName){
return this.storage.ready().then(() => { 
  this.storage.get(`setting:${ settingName }`).then((res) => {
      Promise.resolve(res);
  })
  .catch(err => {
    Promise.reject(err);
  })
})
.catch( err => {
  console.log("Storage Get Error");
  return Promise.reject(err);
}
);
}

有人能看出我做错了吗?这是我们如何调用它的快速 sn-p,它总是在 CMD + R 之前返回 No Token Set。一旦我执行 CMD + R,一切都在那里,一切都完美无缺。

await this.storage.get('Token').then((results) => {
  this.token = results;
})

if(this.token == null)
{
  return Promise.reject("No Token Set");
}

【问题讨论】:

  • 你能分享你利用 await 的整个方法吗?

标签: ionic3 ionic-storage


【解决方案1】:

试试:

this.token = await this.storage.get(‘Token’);

而不是你在异步方法中使用 await 的方式。

也不错:https://www.joshmorony.com/using-asyncawait-syntax-for-promises-in-ionic/

【讨论】:

  • 我会试一试,然后回复你。
  • 这似乎有效:await this.storage.get('Token').then((results) => { this.token = results; })
猜你喜欢
  • 2017-11-20
  • 2017-02-13
  • 1970-01-01
  • 2018-05-26
  • 2013-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-28
相关资源
最近更新 更多