## 第四節: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()
- 第五節:使用實例
- 第一課時:動畫效果
- 第二課時:像素處理