Ionic platform.exitApp()不保存localStorage

时间:2018-09-25 10:50:50

标签: javascript angular typescript ionic-framework ionic2

当我使用Sub Test() Dim xRow As Long Dim tbl As ListObject Dim I As Long Dim J As Long For I = 1 To ActiveSheet.ListObjects("Table2").ListColumns(1).Range.Count - 1 MsgBox (ActiveSheet.ListObjects("Table2").DataBodyRange.Cells(I, 1)) For J = 1 To ActiveSheet.ListObjects("Table3").ListColumns(1).Range.Count - 1 If ActiveSheet.ListObjects("Table2").DataBodyRange.Cells(I, 1) = ActiveSheet.ListObjects("Table3").DataBodyRange.Cells(J, 1) Then ActiveSheet.ListObjects("Table3").ListRows(J).Range.Select ActiveSheet.ListObjects("Table3").ListRows(J).Range.Copy Worksheets("RECHNUNGS 1").Active ActiveSheet.ListObjects("Table13").ListRows(J).Range.Select ActiveSheet.Paste End If Next J Next I End Sub 时,我在执行退出前所做的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()延时调用exit。使用此setTimeout(),用户可以正确保存。

在没有timeout的情况下如何正确保存更改?

2 个答案:

答案 0 :(得分:2)

  

this.storage.set返回一个promise,等待它解决并执行   退出。

这是代码

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

答案 1 :(得分:1)

this.storage.set()返回一个Promise,并在设置键和值时解析。 (请参见Documentation

因此,您需要像这样呼叫then

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