IndexedDB - Promise 包装器
Promise 与回调一样,是一种告诉您希望代码在异步操作完成后执行什么操作而不停止 JavaScript 运行时线程的技术。
可以使用 Promise 代替向异步函数提供回调以在其完成后运行。
Promise 库由 Jake Archibald 创建,它使用 Promise 而不是事件。
比传统的IndexedDB更容易使用。 它简化了 API,同时仍然保持其结构。
这里我们仅展示为什么我们可以使用 Promised 库的增强功能,要了解更多信息您可以访问以下网站 −
它有一些增强功能 −
- 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(); }