0

我的 localforage 有问题,localforage 无法在成功回调中设置全局变量,但是当我console.log显示显示值时。

本地饲料数据:

Key: login
Value: [{"token": "bla bla bla", "member_id":1}]

代码

public login_data: any;
getMemberData() {
  localforage.getItem("login").then(function(value){
    this.login_data = value[0];
  });
  console.log(this.login_data);
} 

输出

undefined

我只想把它变成一个全局变量。而且我可以轻松使用它,例如:

this.login_data.member_id
or
this.login_data.token

我尝试过的一些方法与我的期望不符。我努力了:

将成功的承诺解析中的值分配给外部变量

如何将承诺的返回值分配给变量?

使用 promise 设置一个变量以从回调函数中获取返回值

将 then 函数中的值赋给变量 promise

[注意]我使用 Ionic 2、AngularJS 2、LocalForage

谢谢

4

1 回答 1

0

对承诺进行评估然后设置this.login_data = value[0];。如果您在承诺中更改控制台输出,请查看它是否正确显示输出。

localforage.getItem("login").then(function(value){
this.login_data = value[0];
console.log(this.login_data);
 });

更新——请分享输出

ngOnInit() {
  this.login_data= "My login details";
  console.log('Init to empty : ' );
  console.log(this.login_data);
  console.log('--------');
  this.getMemberData();       
 }


getMemberData() {
 localforage.getItem("login").then(function(value){
 console.log(value[0]);
 console.log('My Init login data still is -');
 console.log(this.login_data);
 console.log('--------');
 this.login_data = value[0];
 console.log('After fetch -');
 console.log(this.login_data);
 console.log('--------');
 });  
} 
于 2016-10-14T20:22:48.917 回答