Ionic 从JSON.parse中检索单个值会给出undefine

x8diyxa7  于 2022-12-31  发布在  Ionic
关注(0)|答案(1)|浏览(170)

我将JSON.stringify的值存储在存储器中,并在检索时解析它,得到以下值:

{
    "name": "fagbemi Ayodele",
    "username": "fagbemiayo",
    "email": "fagbemiayo@yahoo.com",
    "createTime": "2022-08-05 03:28:41",
    "updateTime": null,
    "id": "130"
   
}

但是当我尝试获取name时,我在控制台中得到了undefined。

this.storage.getStorage('user').then((user) =>{
      this.profile = JSON.parse(user.value);
     console.log(this.profile);
    });

console.log(this.profile); //This list all the json data

console.log(this.profile.name); //Gives undefined
igetnqfo

igetnqfo1#

在下面的代码中,line Aline B将在line C之前执行

this.storage.getStorage('user').then((user) =>{
      this.profile = JSON.parse(user.value); // `line C` 
      console.log(this.profile);
    });

console.log(this.profile); // line A
console.log(this.profile.name); // line B

原因是promise在同步代码之后才计算。

更多

你可能想知道为什么这是工作:

console.log(this.profile); // This has profile.name
console.log(this.profile.name); // Gives undefined

这是因为chrome开发工具保留了一个对象的句柄,所以如果你改变对象,你可以看到更新的结果。这可能会让人困惑。要查看对象在某个时间点的快照,创建一个克隆,例如:

console.log({...this.profile}); // A copy of the object at a point in time
console.log(this.profile.name); // Gives undefined

相关问题