以字符串形式获取离子存储项目[重复]

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 ); 如果它是这样工作的,那么您可以接受答案。能否请您详细说明第二个问题?

以上是关于以字符串形式获取离子存储项目[重复]的主要内容,如果未能解决你的问题,请参考以下文章

离子存储在承诺中未定义?

我将如何从离子存储中返回我的对象​​[重复]

以字符串形式存储在 Pandas 数据框列中的解析列表

React JS将项目推送到数组以获取列表

离子存储将预期数组作为字符串返回

如何在redshift上取消嵌套json字符串数组[重复]