【发布时间】:2016-04-27 05:11:11
【问题描述】:
我想知道关闭与数据库的连接的正确位置是什么。
假设我有以下代码:
function addItem(dbName, versionNumber, storeName, element, callback){
var requestOpenDB = indexedDB.open(dbName, versionNumber); //IDBRequest
requestOpenDB.onsuccess = function(event){
//console.log ("requestOpenDB.onsuccess ");
var db = event.target.result;
var trans = db.transaction(storeName, "readwrite");
var store = trans.objectStore(storeName);
var requestAdd = store.add(element);
requestAdd.onsuccess = function(event) {
callback("Success");
};
requestAdd.onerror = function(event) {
callback("Error");
};
};
requestOpenDB.onerror = function(event) {
console.log ("Error:" + event.srcElement.error.message);/* handle error */
callback("Error");
};
}
addItem 基本上是在数据库中添加一个新元素。根据我的理解,当 requestAdd 事件被触发时,并不一定意味着事务已经完成。因此,我想知道调用 db.close() 的最佳位置是什么。我正在关闭 requestAdd.onsucess 内部的连接,但如果发生错误并触发了 requestAdd.onerror,则连接可能仍会打开。我正在考虑在 request.onerror 下添加 trans.oncomplete 并在此处关闭数据库连接,这可能是一个更好的选择。任何意见都将受到欢迎。谢谢。
【问题讨论】: