如何判断 IndexedDB 何时被手动关闭?

问题描述

我需要在数据库升级阶段过去后创建一个对象存储。为了实现这一点,我尝试关闭并重新打开具有新版本的数据库,并在 onupgradeneeded 事件中创建存储。

IndexedDB 有一个 close() 方法

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

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

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

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

解决方法

我认为你不能?如果我理解正确的话,Joshua Bell 对 How do I check if an indexedDB instance is open? 的回答可能有助于回答您的问题。