Http 离子3警报按钮处理程序异步问题

Http 离子3警报按钮处理程序异步问题,http,asynchronous,ionic-framework,ionic3,local-storage,Http,Asynchronous,Ionic Framework,Ionic3,Local Storage,我当前正在对http.post调用中的错误应用代码 this.http.post('api here',{'email':this.username}) .订阅(响应=>{ 如果(响应===true){ localStorage.setItem('Username',this.Username); this.navCtrl.push(第1页); }, (错误)=>{ 如果(错误=='404'){ 让alert=this.alertCtrl.create({ 标题:“”, 消息:“”, 按钮:[

我当前正在对http.post调用中的错误应用代码

this.http.post('api here',{'email':this.username})
.订阅(响应=>{
如果(响应===true){
localStorage.setItem('Username',this.Username);
this.navCtrl.push(第1页);
},
(错误)=>{
如果(错误=='404'){
让alert=this.alertCtrl.create({
标题:“”,
消息:“”,
按钮:[
{
正文:'否',
处理程序:()=>{
log('no clicked');
}
},
{
测试:'是',
处理程序:()=>{
localStorage.setItem('Register\u User',
这是(用户名);
this.navCtrl.push(第2页);
}
}
]
});
alert.present();
}}
})

因此,上面我遇到的问题是,当我从服务器收到404错误,并且我想将它们引导到第2页时,它没有设置本地存储寄存器的用户名。我的猜测是,这是一个异步的东西,它在设置存储之前就被推到了页面上。如何解决此问题?

如果
localStorage.setItem
Promise,则

handler: () => {
  localStorage.setItem('Register_User', this.username)
    .then(()=>{this.navCtrl.push(Page_2);})
}

然后设置一个超时以推送到下一页,保存在localstorage中,然后转到页面
setTimeout(()=>{this.navCtrl.push(page_2);},1500)您在设置数据后推送页面时做得很好,localstorage不是异步的,我认为问题在于您对http post的处理。