Gen*_*ene 3 javascript ionic-framework ionic2 angular
我试图将从.get函数检索到的值设置为外部声明但不能这样做的变量.
var dt;
//retrieve
this.local.get('didTutorial').then((value) => {
alert(value);
dt = value;
})
console.log("Local Storage value: "+dt);
Run Code Online (Sandbox Code Playgroud)
我能够为警报获得"true",但是对于在函数外部打印的console.log获得"未定义".
一个解决方法是我可以将所有剩余的代码放入".then函数"中,但这将非常混乱.
更新(解决方案):
根据离子api(http://ionicframework.com/docs/v2/api/platform/storage/LocalStorage/),他们使用.get来检索值.
由于使用promises具有自身的局限性,因此使用以下内容:
constructor(navController) {
this.navController = navController;
this.local = new Storage(LocalStorage);
}
Run Code Online (Sandbox Code Playgroud)
和getItem函数,
localStorage.getItem('didTutorial')
Run Code Online (Sandbox Code Playgroud)
您将能够检索它而无需将所有内容都放入回调方法中.
在这种情况下,从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)
})
Run Code Online (Sandbox Code Playgroud)
另外,你会注意到我改变了你的console.log
调用参数.那是因为console.log
接受了一个或多个参数,并且当你传递它们而不是连接它们时格式化得更好.只是专业提示.