由于使用了 `setInterval`,`beforeunload` 部分无法持续运行

作者: dtschust创建于 2018年8月16日更新于 2026年7月22日

我正在使用 redux-persist 的更先进的钩子 (使用 createPersistoid) 来更精细地控制我们保存存储状态的频率。目前,我将 persistoid.update 的更新速度限制为每 30 秒一次。但是,如果用户关闭窗口或离开页面,我希望利用这个机会进行保存,通过监听 beforeunload 事件。 这并不够可靠,因为 persistoid.update 使用了设置了超时值为配置的节流值的 setInterval 这里。在我的情况下,这个值是 0,但使用 setInterval 来使此操作异步意味着 persistoid 更新在标签关闭之前并未完成。你认为最佳的方法是什么来解决这个问题?有几个想法:

  • 如果 throttle 设置为 0,则不要使用 setInterval,而是同步执行。
  • 一个名为 disableThrottlewriteSynchronously 的配置布尔值,用于同步执行更新。 我乐意为这两种方法提交一个 PR,我只是想知道哪种方法更受欢迎。 非常感谢您维护这套库! <3

内容来源: rt2zz/redux-persist