卸载前保存到 IndexedDB

Save to IndexedDB beforeunload

我想在用户离开我的页面之前保存到 IndexedDB。我定期这样做,但由于它很大,我不想经常保存。

我当前的(损坏的)代码如下:

window.addEventListener('beforeunload', (event) => {
    persist(state);
});

在这里,立即坚持 returns 在我有机会保存状态之前,一个承诺和浏览器已经存在。

不幸的是,此时 IndexedDB 似乎没有同步 API。

我可以做些什么来让浏览器等待以便我可以将值存储到 IndexedDB 中吗?

您的页面中首先可以有类似保存按钮的内容。

然后当用户关闭页面时,您可以在不保存的情况下显示关闭页面的确认请求对话框。您可以利用这段时间来保存数据,或者由于通知用户保存数据,用户可以手动按保存按钮进行保存。

您改为在页面卸载时保存到 localStorage 怎么样?然后稍后在 localStorage 中检查此值,并在有更多时间时将其移至 indexedDB。