如何正确等待存储事件?

时间:2016-11-17 19:52:17

标签: javascript browser

我需要一种安全的方式来存储身份验证令牌,但我希望让用户在多个选项卡上使用该应用,而无需每次都重新验证。所以我需要使用sessionStorage的多标签辅助功能localStorage进行推理。这就是我实施browser cross-tab communication with Storage events的原因。

概念是,在启动时,应用程序会将一些数据写入localStorage,这会在每个选项卡(具有相同的域)上触发StorageEvent。在事件的回调中,其他实例可以在另一个StorageEvent的有效负载中发回数据。因此,新实例可以收集数据,如身份验证令牌。

问题是,addEventListener回调是异步的,如果没有其他标签,则不会调用任何内容,所以决定我的应用何时呈现登录表单不是一件容易的事。的内容。 (我的应用程序的初始渲染是同步的,但在大多数情况下,事件在auth逻辑之前到达。)

我尝试setImmediate,这增加了正确行为的数量,但在某些情况下,当回调仍然触发太晚时。

我怎样才能正确等待这样的异步事件?

0 个答案:

没有答案