- IndexedDB 教程
- IndexedDB - 首页
- IndexedDB - 简介
- IndexedDB - 安装
- IndexedDB - 连接
- IndexedDB - 对象存储
- IndexedDB - 创建数据
- IndexedDB - 读取数据
- IndexedDB - 更新数据
- IndexedDB - 删除数据
- 使用 getAll() 函数
- IndexedDB - 索引
- IndexedDB - 范围
- IndexedDB - 事务
- IndexedDB - 错误处理
- IndexedDB - 搜索
- IndexedDB - 游标
- IndexedDB - Promise Wrapper
- IndexedDB - Ecmascript 绑定
- IndexedDB 实用资源
- IndexedDB - 快速指南
- IndexedDB - 实用资源
- IndexedDB - 讨论
IndexedDB - Promise Wrapper
Promise 类似于回调函数,它是一种技术,用于在你想要执行代码来完成一个异步操作时告诉什么,而无需停止 javascript 的运行时线程。
你可以使用 promise 替代向异步函数提供一个在该函数完成后运行的回调函数。
Jake Archibald 创建了 promise library,它使用 promise 而非事件。
它比传统的 IndexedDB 更容易使用。它在保持 API 结构的同时,对该 API 进行了简化。
我们这里只展示改进之处,关于我们可以如何使用 Promise library 的详细信息,你可以访问以下网站:
它有一些改进:
- 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
如果一个事务是一个单一存储,则 store 属性引用该存储,否则它就是未定义的,然后我们使用
const tx = db.transaction('any transaction'); const store = tx.store; tx.objectStore(storeName);
tx.done
.done promise 在一个事务成功完成后解决,否则它会因一个事务错误而被拒绝。
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
它们返回一个指向游标的 promise,否则返回 null。
let cursor = await db.transaction(storeName).store.openCursor(); while (cursor) { document.write(cursor.key, cursor.value); cursor = await cursor.continue(); }
广告