IndexedDB - Promise 包装器

Promise 与回调一样,是一种告诉您希望代码在异步操作完成后执行什么操作而不停止 JavaScript 运行时线程的技术。

可以使用 Promise 代替向异步函数提供回调以在其完成后运行。

Promise 库由 Jake Archibald 创建,它使用 Promise 而不是事件。

比传统的IndexedDB更容易使用。 它简化了 API,同时仍然保持其结构。

这里我们仅展示为什么我们可以使用 Promised 库的增强功能,要了解更多信息您可以访问以下网站 −

https://developers.google.com

它有一些增强功能 −

  • IDBDatabase
  • IDBTransaction
  • IDBCursor

IDBDatabase

从对象存储中获取或设置的快捷方式

const value = await db.get(storeName, key);
await db.put(storeName, value, key);

从索引获取的快捷方式

const value = await db.getFromIndex(storeName, indexName, key);

IDBTransaction

tx.store

如果事务是单个存储,则存储属性引用存储,否则它是未定义的,那么我们使用

const tx = db.transaction('any transaction');
const store = tx.store;
tx.objectStore(storeName);

tx.done

当事务成功完成时,.done 应答将得到解决,否则会因事务错误而拒绝。

const tx = db.transaction(storeName, 'readwrite');
await Promise.all([
   tx.store.add('one', 'two'),
   tx.store.put('three', 'four'),
   tx.done,
]);

IDBCursor

游标前进的方法是 −

  • Advance
  • Continue
  • ContinuePrimaryKey

它们向游标返回一个应答,否则返回 null。

let cursor = await db.transaction(storeName).store.openCursor();
while (cursor) {
   document.write(cursor.key, cursor.value);
   cursor = await cursor.continue();
}