我有一个带有indexedDB函数的JS文件,如下所示:
// Get all object stores from IndexedDB
mydb.indexedDB.getObjStores = function() {
var db = mydb.indexedDB.db;
return db.objectStoreNames;
};
我从另一个 JS 文件调用此函数,其中我需要对象存储的名称来对它们执行某些操作,例如填充组合:
function doSomething(){
var arr = mydb.indexedDB.getObjStores();
for (var i=0; i<arr.length;i++) {
document.getElementById('mycombo').options[i] = new Option (arr[i], i);
}
}
根据浏览器的不同,组合是空的,尽管我可以获得数组的长度(奇怪)。我认为问题是异步的事情正在杀死我...我认为使用像 addEventListener 这样的东西是一个好主意( When can I tell that I have opened a connection in indexedDB? ),但是这个 indexedDB 调用没有 onsuccess 事件。它适用于 Chrome 和 Firefox,但不适用于 PDA 浏览器,例如 我怎么能等这个呢?这是问题所在吗?
谢谢!
最佳答案
问题已解决。该浏览器中的indexedDB规范有点不同:getObjStores()返回一个带有一些数组的对象,其中一个是对象存储列表。所以我正在检索不存在的数据,因为我期待一个 DOMStringList。在非常特殊的情况下出现“愚蠢”的错误。谢谢。
关于JavaScript - 等待 IndexedDB 中的异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13968038/