离子2本地存储无法将检索到的值设置为变量

时间:2016-04-25 03:35:55

标签: javascript ionic-framework angular ionic2

我试图将从.get函数检索到的值设置为在外部声明但不能这样做的变量。

var dt;
//retrieve
this.local.get('didTutorial').then((value) => {
  alert(value);
   dt = value;
})

console.log("Local Storage value: "+dt);

我能够为警报获得“真实”,但是对于在函数外部打印的console.log获得“未定义”。

enter image description here enter image description here

一个解决方法是我可以将所有剩余的代码放入“.then函数”中,但这会非常混乱。

更新(溶液):

根据离子api(http://ionicframework.com/docs/v2/api/platform/storage/LocalStorage/),他们使用.get来检索值。

由于使用promises具有自身的局限性,因此使用以下内容:

 constructor(navController) {
     this.navController = navController;
     this.local = new Storage(LocalStorage);
 }

和getItem函数,

localStorage.getItem('didTutorial')

您将能够检索它而无需将所有内容都放入回调方法中。

1 个答案:

答案 0 :(得分:6)

在这种情况下,从localStorage包装器中读取是异步的,这意味着传递给this.local.get的回调在调用console.log之后被称为。尝试将console.log 置于回调中;它应该工作:

// retrieve
this.local.get('didTutorial').then((value) => {
  alert(value)
  var dt = value
  console.log("Local Storage value:", dt)
})

另外,您会注意到我更改了您的console.log来电参数。那是因为console.log接受了一个或多个参数,并且在传递它们而不是连接它们时更好地格式化它们。只是专业提示。