以字符串形式获取离子存储项目[重复]
Posted
技术标签:
【中文标题】以字符串形式获取离子存储项目[重复]【英文标题】: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
【问题讨论】:
离子存储返回数据的承诺.. 感谢该链接,现在经过一些修改,我可以从存储中获得我想要的东西 【参考方案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 );
如果它是这样工作的,那么您可以接受答案。能否请您详细说明第二个问题?以上是关于以字符串形式获取离子存储项目[重复]的主要内容,如果未能解决你的问题,请参考以下文章