处理索引数据库 api 连接的更好方法?

Better way to handle connections for indexed db api?

我正在使用 html5 索引数据库 api 来存储缓存,但是当我尝试删除数据库时,我经常收到关于连接被阻止的错误。后来我意识到这可能是因为我没有明确关闭连接。我所做的只是打开它,并将数据库变量存储在一个全局变量中,然后只使用它,永远不要关闭它。

但现在我想我有两种选择来处理它,但不确定哪一种更好。在我的应用程序中,会多次读取和写入数据库,并且可能同时发生。

所以我的两个方法是

1) 每次读取或写入时,我都会将数据库打开到一个新变量中,并在完成任务后将其关闭。

2) 只在我写或读时打开它,如果它还没有打开,那么在你完成它之后,只有在没有其他人使用它时才关闭它。如果有其他东西,则保持打开状态,因为其他东西会关闭它。

有谁知道其中之一是否会更好用?

谢谢

我喜欢每次打开和关闭。答案是主观的。

另一个未说明的选项是侦听在连接处触发的 "versionchange" 事件并关闭连接以响应取消阻止删除。

var connection;

var open = indexedDB.open(name, version);
open.onupgradeneeded = function() {
  // populate schema here
};
open.onsuccess = function() {
  connection = open.result;
  connection.onversionchange = function(e) {
    if (e.newVersion === 0)
      console.log('being deleted');
    else
      console.log('being upgraded');

    connection.close();
    connection = null; // so other code can tell it is closed
  };
};