Проблема с асинхронным обработчиком кнопки оповещения ionic 3 - PullRequest
0 голосов
/ 06 июля 2018

В настоящее время я применяю код для ошибки из вызова http.post.

this.http.post('api here', {'email':this.username})
.subscribe(response => {
    if(response === true){
        localStorage.setItem('Username', this.username);
        this.navCtrl.push(Page_1);
},
(error) => {
    if(error == '404'){
        let alert = this.alertCtrl.create({
            title:'',
            message:'',
            buttons: [
                 {
                     text:'no',
                     handler: () => {
                         console.log('no clicked');
                     }
                 },
                 {
                     test:'yes',
                     handler: () => {
                         localStorage.setItem('Register_User', 
                         this.username);
                         this.navCtrl.push(Page_2);
                     }
                 }
                    ]
         });
         alert.present();
     }}
})

Итак, проблема, с которой я столкнулся выше, заключается в том, что когда я получаю ошибку 404 от сервера и хочу направить их на страницу 2, он не устанавливает локальное хранилище register_username. Я предполагаю, что это асинхронная вещь, и она перемещается на страницу, прежде чем она сможет установить хранилище. Как мне решить эту проблему?

1 Ответ

0 голосов
/ 06 июля 2018

Если localStorage.setItem равно Обещание , то

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