是否有任何方法可以检测索引数据库是否被阻塞,因为readwrite或versionchange锁定在多个tab中。检测锁定是否已释放,然后继续执行readwrite或versionchange操作。
答案 0 :(得分:2)
要检测indexedDB数据库是否在另一个选项卡中被阻止,您可以在连接到数据库时侦听被阻止的事件。
const request = indexedDB.open(...);
request.onblocked = function(event) {
console.log('blocked :(');
};
正如贝尔先生在评论中所述,阻止事件并不意味着成功事件永远不会触发,只是意味着连接过程在被阻止(无限期)时被“暂停”。只需监听成功事件即表示连接过程不再被阻止。
const wasBlocked = false;
const request = indexedDB.open(...);
request.onblocked = function(event) {
wasBlocked = true;
};
request.onsuccess = function(event) {
if(wasBlocked) {
fireUnblockedEvent(...);
}
};