首页 > 解决方案 > 如何判断 IndexedDB 何时手动关闭?

问题描述

当数据库的升级阶段通过时,我需要创建一个对象存储。为此,我正在尝试使用新版本关闭并重新打开数据库,并在onupgradeneeded事件中创建商店。

IndexedDB 有一个close()方法

立即返回并在单独的线程中关闭与数据库的连接。

但是,它不会像其他类似方法一样返回 IDBRequest。此方法等待正在运行的事务完成,因此可以延迟关闭。我需要知道关闭事件,所以我可以重新打开它。有一个不会触发的onclose事件,因为连接没有意外关闭:

当数据库连接意外关闭时触发。也可通过 onclose 属性获得。

我不想粗鲁地定期检查打开尝试中的onblocked事件。在我的测试IndexedDB.open()中成功地重新打开了数据库,但如果不能保证,我无法将其推送到生产环境中。在w3 规范中,他们写了done flag,但我在浏览器控制台中找不到它。

标签: javascripteventsindexeddbthread-synchronization

解决方案


我不认为你可以?如果我理解正确,也许 Joshua Bell 对如何检查 indexedDB 实例是否打开?有助于回答您的问题。


推荐阅读