如何解决localStorage同步异步的问题?

发布于 2022-09-11 19:54:42 字数 205 浏览 15 评论 0

前端框架Angular 7+ionic4,在公众号中需要在app.compponents.ts文件中走授权接口,拿到授权后把token存在本地,然后跳转到其它页面在接口请求中把token放到请求头中,现在的问题是有时候token还没拿到就先走了其它接口了,导致数据无法请求到,我现在的做法是延迟加载500ms后再去请求接口以保证token已存在localstorage中,不知道是否有更好的办法。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

感悟人生的甜 2022-09-18 19:54:42

古老的方法的话,使用Promise,但Angular的http接口和其他异步处理接口都是使用Observable,Angular7/inonic4可以使用es7的async/await,这个更方便。

如果直接使用Observable,则可以这样保证取得tocken之后,再调用navigateToPageXXX跳转到XXX页面。

getLicense().subscribe(token=>{
    navigateToPageXXX(token);
});

如果是async/await,则定义

async getLicense():string{

    ...
    return await this.http.post().toPromise();
}

toPageXXX(){
    let token= await this.getLicense();
    navigateToPageXXX(token);
}

心房敞 2022-09-18 19:54:42

用全局变量 放,
然后同时存localstorage,
(上两步可以 封装一个方法)

取的时候,
从全局变量取,
没值 的时候取localstorage里的值。
(也可以封装一个方法)

然后再写一个清除的方法

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文