【发布时间】:2020-02-10 07:28:47
【问题描述】:
设置存储或发现错误后如何返回API调用? 从 console.log 中,seq 总是在 Token Stored 之前返回。
我想要的顺序是:
- 用户使用函数SubmitForm()提交表单。
- 该函数调用user.ts页面中的另一个函数,如果用户认证成功,将弹出login.ts页面。
- user.ts 当前处理 api 调用并设置存储(如果身份验证成功)。在调用 isLoggedIn(在 login.ts 页面中)检查后,存储总是延迟,因此无法弹出。
login.ts
SubmitForm(account: any) {
this.user.login(account).subscribe((resp) => {
if(this.user.isLoggedIn){
this.navCtrl.pop();
}
}, (err) => {
});
}
user.ts(用户提供者)
login(logininfo: any) {
let seq = this.api.post('auth/login', logininfo).share();
seq.subscribe((res: any) => {
if (res.status == 'success') {
this.storage.set('token', res.token).then(data => {
console.log('Token Stored', data); //This always get called after `return seq;`
this.token = data;
this.isLoggedIn = true;
},
error => {
console.log('Error storing token', error);
});
}
}, err => {
console.error('ERROR', err);
});
return seq; //This always called before the token was stored
}
【问题讨论】:
-
你需要在你的方法中使用 async/await
标签: ionic-framework promise ionic3