Ionic platform.exitApp() 不保存 localStorage

Ionic platform.exitApp() not saves localStorage

当我使用 platform.exitApp() 时,我在执行退出之前对 localStorage 所做的更改没有保存。

以下是我的启动方式:

this.user.profileGetbyId(this.user.userdata.id)
                                .subscribe(res => {
                                    if(res && res.success) {

                                        localStorage.setItem('user', res.data);
                                        this.user.userdata = res.data;
                                        console.log(this.user.userdata);
                                        this.platform.exitApp();

                                        //temp decision
                                        // setTimeout(() => {
                                        //  this.platform.exitApp();
                                        // }, 500);

                                    }
                                })

这样,在 exit() 启动之前,控制台显示我已经更新了用户,但是当我下次启动应用程序时,我拥有 exit() 之前的用户。

接下来我尝试的是使用 setTimeout() 延迟调用退出。使用此 timeout 用户可以正确保存。

如何在没有 setTimeout() 的情况下以正确的方式保持更改?

this.storage.set returns a promise, wait for it to resolve and do exit.

这是代码

this.storage.set('user', res.data).then(data=>{
   this.user.userdata = res.data;
   this.platform.exitApp();
})

在localStorage中,在设置

之前使用JSON.stringify
localStorage.setItem("user", JSON.stringify(res.data));

要从 localStorage 获取值,请使用

JSON.parse(localStorage.getItem("user"))

this.storage.set() returns 承诺并在设置键和值时解析。 (参见 Documentation

所以你需要这样调用then:

this.storage.set('user', res.data).then(data => { 
    this.user.userdata = res.data;
    this.platform.exitApp();
}