假设我有一个indexedDB对象的实例。是否有一种简单的方法来检测对象是否处于“打开”状态?
我尝试过database.closePending和查看其他属性,但没有看到告诉我数据库状态的简单属性。
我想同步地做到这一点。
像尝试在数据库上打开事务并检查是否发生异常这样的操作对我来说不是一个合理的解决方案。
我不想维护与数据库实例相关联的额外变量。
也许我错过了api中的一些简单功能吗?是否有某些可观察的实例变量特性,可以快速轻松地查询以确定状态?
换句话说,您能否改进以下实现?
或者用这种方法?
我尝试过database.closePending和查看其他属性,但没有看到告诉我数据库状态的简单属性。
我想同步地做到这一点。
像尝试在数据库上打开事务并检查是否发生异常这样的操作对我来说不是一个合理的解决方案。
我不想维护与数据库实例相关联的额外变量。
也许我错过了api中的一些简单功能吗?是否有某些可观察的实例变量特性,可以快速轻松地查询以确定状态?
换句话说,您能否改进以下实现?
function isOpen(db) {
if(db && Object.prototype.toString.call(db) === '[object IDBDatabase]') {
var names = db.objectStoreNames();
if(names && names.length) {
try {
var transaction = db.transaction(names[0]);
transaction.abort();
return true;
} catch(error) {
}
}
}
}
还是这种方法?
var opened = false;
var db;
var request = indexedDB.open(...);
request.onsuccess = function() {
db = request.result;
opened = true;
};
function isOpen(db) {
return opened;
}
db.close();
opened = false;
或者用这种方法?
var db;
var request = indexedDB.open(...);
request.onsuccess = function() {
db = request.result;
db.onclose = function() {
db._secret_did_close = true;
};
};
function isOpen(db) {
return db instanceof IDBDatabase && !db.hasOwnProperty('_secret_did_close');
}