## 第四节:IDBRequest 对象
`IDBRequest`对象表示打开的数据库连接,`indexedDB.open()`方法和`indexedDB.deleteDatabase()`方法会返回这个对象。数据库的操作都是通过这个对象完成的。
这个对象的所有操作都是异步操作,要通过`readyState`属性判断是否完成,如果为`pending`就表示操作正在进行,如果为`done`就表示操作完成,可能成功也可能失败。
操作完成以后,触发`success`事件或`error`事件,这时可以通过`result`属性和`error`属性拿到操作结果。如果在`pending`阶段,就去读取这两个属性,是会报错的。
`IDBRequest` 对象有以下属性。
* `IDBRequest.readyState`:等于`pending`表示操作正在进行,等于`done`表示操作正在完成。
* `IDBRequest.result`:返回请求的结果。如果请求失败、结果不可用,读取该属性会报错。
* `IDBRequest.error`:请求失败时,返回错误对象。
* `IDBRequest.source`:返回请求的来源(比如索引对象或 ObjectStore)。
* `IDBRequest.transaction`:返回当前请求正在进行的事务,如果不包含事务,返回`null`。
* `IDBRequest.onsuccess`:指定`success`事件的监听函数。
* `IDBRequest.onerror`:指定`error`事件的监听函数。
`IDBOpenDBRequest` 对象继承了`IDBRequest`对象,提供了两个额外的事件监听属性。
* `IDBOpenDBRequest.onblocked`:指定`blocked`事件(`upgradeneeded`事件触发时,数据库仍然在使用)的监听函数。
* `IDBOpenDBRequest.onupgradeneeded`:`upgradeneeded`事件的监听函数。
- 第一章:音视频
- 第一节:概述
- 第二节:媒体元素
- 第三节:视频元素
- 第四节:音频元素
- 第四节:事件
- 第二章:高德地图
- 第三章:Storage 接口
- 第一节:概述
- 第二节:属性和方法
- 第三节:事件
- 第四章:IndexedDB
- 第一节:概述
- 第二节:基本概念
- 第三节:indexedDB 对象
- 第四节:IDBRequest 对象
- 第五节:IDBDatabase 对象
- 第六节:IDBObjectStore 对象
- 第七节:IDBTransaction 对象
- 第八节:IDBIndex 对象
- 第九节:IDBCursor 对象
- 第十节:IDBKeyRange 对象
- 第十一节:操作流程
- 第五章:Canvas
- 第一节:概述
- 第二节:绘制图像
- 第一课时:路径
- 第二课时:线型
- 第三课时:矩形
- 第四课时:弧线
- 第五课时:文本
- 第六课时:渐变色和图像填充
- 第七课时:阴影
- 第三节:图像处理
- 第一课时:写入图像
- 第二课时:像素读写
- 第三课时:保存和恢复
- 第四课时:画布
- 第五课时:图像变换
- 第四节:元素方法
- 第一课时:toDataURL()
- 第二课时:toBlob()
- 第五节:使用实例
- 第一课时:动画效果
- 第二课时:像素处理