Ionic platform.exitApp () не сохраняет localStorage - PullRequest
0 голосов
/ 25 сентября 2018

Когда я использую 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);

                                    }
                                })

Inтаким образом, перед тем, как exit() запустит, консоль покажет мне, что я обновил пользователя, но при следующем запуске приложения у меня появится пользователь, который был до exit().

Следующее, что я попробовал, было вызвать exit с задержкой по времени, используя setTimeout().С этим timeout пользователь сохраняет правильно.

Как правильно сохранить изменения без setTimeout()?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

this.storage.set() возвращает обещание и разрешается, когда установлены ключ и значение.(См. Документация )

Так что вам нужно позвонить then так:

this.storage.set('user', res.data).then(data => { 
    this.user.userdata = res.data;
    this.platform.exitApp();
}
0 голосов
/ 25 сентября 2018

this.storage.set возвращает обещание, дождитесь его разрешения и завершите работу.

Вот код

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"))
...