【问题标题】:Get Ionic storage item as a string [duplicate]以字符串形式获取离子存储项目[重复]
【发布时间】:2018-08-02 05:37:53
【问题描述】:

正如标题中所说,我的问题是当我这样做时:

this.storage.get('user')

我得到了这个对象

t {__zone_symbol__state: null, __zone_symbol__value: Array(0)}

我不知道如何操作它。

我在问是否有办法从我的存储中获取字符串值 例子

// when i store user id like that 
this.storage.set("user", JSON.stringify(userID));
console.log(this.storage.get('user'))//output 100 for example

【问题讨论】:

  • 离子存储返回数据的承诺..
  • 感谢该链接,现在经过一些修改,我可以从存储中获得我想要的东西

标签: angular sqlite typescript ionic3 ionic-storage


【解决方案1】:

接受的答案当然有效。由于后续 cmets 正在询问如何使用存储中的结果字符串,因此另一种方法是使用 async/await 来处理 Promise。这可以清理嵌套.then() 的潜在混乱

let result: string = await this.storage.get('user');
//Use result here

【讨论】:

  • 嗨,谢谢你的帮助,有没有一种特定的方法来使用这行代码,比如在一个方法或其他东西中,因为当我直接使用它时,它会给我这个错误Typescript Error Cannot find name 'await'. 和 @ 987654325@
  • Typescript 在 1.7 中增加了对 async/await 的支持。 await 需要位于标有async 的方法中。有关更多信息,请参阅 typescript 1.7 文档:typescriptlang.org/docs/handbook/release-notes/…
  • 谢谢你,我按照你说的做了,现在可以了,如果你允许,我有第二个问题,当然,有没有办法制作一个全局变量,我什么时候想使用我从存储中获得的值我所要做的就是使用该变量?
  • 可能,是的。您可以从 Angular 服务/提供者中创建一个属性,该属性会从这个异步存储方法中填充(在启动时?)。不利的一面是,在异步启动例程填充它之前,该属性将为空/空。因为从存储中获取东西是异步的并且使用承诺,所以你无能为力 - 你不能真正将它强制转换为一个简单的变量。
  • 嗯谢谢你,所以提供者的东西将更多地用于减少代码行并使其更容易操作
【解决方案2】:

离子存储返回数据的承诺。因此,您必须等待 promise 得到解决并获取如下数据:

this.storage.get('user').then((result) => {
      console.log('My result', result);
});

【讨论】:

  • 它对我有用,如果可能的话,我还有另一个问题,如果我有一些治疗取决于那个结果,我所要做的就是把它放在这里? this.storage.get('user').then((result) => { // my code });
  • 如果它是这样工作的,那么您可以接受答案。能否请您详细说明第二个问题?
猜你喜欢
  • 1970-01-01
  • 2019-07-16
  • 1970-01-01
  • 1970-01-01
  • 2017-10-21
  • 2015-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多