有没有办法检测索引数据库是否因多页选项卡中的读写或版本更改而被阻止

时间:2016-10-12 11:04:20

标签: indexeddb

是否有任何方法可以检测索引数据库是否被阻塞,因为readwrite或versionchange锁定在多个tab中。检测锁定是否已释放,然后继续执行readwrite或versionchange操作。

1 个答案:

答案 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(...);
  }
};