IndexedDB - Promise 包装器


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

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

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

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

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

https://developers.google.com

它有一些增强功能 -

  • IDB数据库
  • IDB交易
  • IDB游标

IDB数据库

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

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

从索引获取的快捷方式

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

IDB交易

TX.商店

如果交易是单个商店,则商店属性引用该商店,否则它是未定义的,那么我们使用

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

发送完成

当交易成功完成时, .done 承诺会解析,否则会因交易错误而拒绝。

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

IDB游标

光标前进方法是 -

  • 进步
  • 继续
  • 继续主键

它们向游标返回一个承诺,否则返回 null。

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