JavaScript - 等待 IndexedDB 中的异步函数

标签 javascript indexeddb

我有一个带有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/

相关文章:

javascript - 防止 ko 单击绑定(bind)到可拖动?

javascript - 防止从 url 导航到另一个页面

javascript - 约束错误 : Key already exists in the object store

javascript - 使用indexedDB返回 'undefined'

indexeddb - 导入和导出 Indexeddb 数据

dart - IndexedDb:database.close() 挂起

javascript - 在状态更新期间避免组件内部的刷新功能

javascript - 动态切换 CSS 文件

javascript - 内部/模块/cjs/loader.js :582 throw err

javascript - IndexedDB 事务和 Promises 之间的相互作用不一致