我正在开发一个 Angular 4 应用程序。一旦用户想要登录系统,它就会向服务器发送一个 http 请求,服务器验证用户并发送一个带有身份验证 key 和其他用户详细信息的 reposnce。我使用本地存储来保存这些信息
login() {
if (this.loginForm.valid) {
this.serviceUserService.authenticate(this.loginForm).subscribe(response => {
if (response.message != "_err") {
//saving the current user in localstorage
localStorage.setItem('currentUser', JSON.stringify(response.body));
this.router.navigateByUrl('/');
} else {
alert("invalid login. Please try again")
}
}, err => {
console.log(err);
})
}
}
localStorage.setItem()
似乎是一个异步函数。所以在将当前用户保存在本地存储之前,它会重定向到主页。但由于 token 未保存在本地存储中,因此任何 http 请求都不会起作用。我如何等到 localStorage.setItem()
完成它的任务,然后将用户发送到主页。
最佳答案
你错了,所有 localStorage 调用都是同步。也许您可以在导航到下一页之前添加一个检查。
localStorage.setItem('currentUser', JSON.stringify(response.body));
this.router.navigateByUrl('/');
关于javascript - 如何等到 localStorage.setItem 在 Angular 4 中完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48457389/