我需要一种安全的方式来存储身份验证令牌,但我希望让用户在多个选项卡上使用该应用,而无需每次都重新验证。所以我需要使用sessionStorage
的多标签辅助功能localStorage
进行推理。这就是我实施browser cross-tab communication with Storage events的原因。
概念是,在启动时,应用程序会将一些数据写入localStorage
,这会在每个选项卡(具有相同的域)上触发StorageEvent。在事件的回调中,其他实例可以在另一个StorageEvent的有效负载中发回数据。因此,新实例可以收集数据,如身份验证令牌。
问题是,addEventListener
回调是异步的,如果没有其他标签,则不会调用任何内容,所以决定我的应用何时呈现登录表单不是一件容易的事。的内容。 (我的应用程序的初始渲染是同步的,但在大多数情况下,事件在auth逻辑之前到达。)
我尝试setImmediate
,这增加了正确行为的数量,但在某些情况下,当回调仍然触发太晚时。
我怎样才能正确等待这样的异步事件?