IDBRequest - 提供数据库对象异步请求结果的访问

IDBRequestIndexedDB API 的接口,提供了使用事件处理程序属性处理的,数据库和数据库对象异步请求结果的访问。数据库上的每个读写操作都是使用请求完成的。

请求对象最初不包含有关操作结果的任何信息,但一旦信息可用,就会对请求触发事件,并通过 IDBRequest 实例的属性提供信息。

所有异步操作都会立即返回 IDBRequest 实例。每个请求都有一个 readyState,它被设置为 'pending' 状态;当请求完成或失败时,它会变为 'done'。当状态设置为 done 时,每个请求都返回一个 result 和一个 error,并在请求中触发一个事件。当状态仍为 pending 时,尝试访问 resulterror 都会引发 InvalidStateError 异常。

简而言之,所有异步方法都返回一个请求对象。如果请求已成功完成,则通过 result 属性获得结果,并在请求中触发指示成功的事件(IDBRequest.onsuccess)。如果在执行操作时发生错误,则通过 result 属性获取异常,并触发错误事件(IDBRequest.onerror)。

接口 IDBOpenDBRequest 派生自 IDBRequest

注意: 此特性在 Web Worker 中可用。

属性

还从 EventTarget 继承了属性。

IDBRequest.error 只读

如果请求不成功,则返回 DOMException,指示出错的地方。

IDBRequest.result 只读

返回请求的结果。如果请求失败且结果不可用,则抛出 InvalidStateError 异常。

IDBRequest.source 只读

请求的来源,例如 IDBIndexIDBObjectStore。如果不存在源(例如在调用 IDBFactory.open 时),则返回 null

IDBRequest.readyState 只读

请求的状态。每个请求都以 pending 状态开始。当请求成功完成或发生错误时,状态将更改为 done

IDBRequest.transaction 只读

请求的事务。对于某些请求,此属性可以为 null,例如从 IDBFactory.open 返回的请求,除非需要升级。 (您只是连接到数据库,因此没有要返回的事务)。

方法

没有特有的方法,但是从 EventTarget 继承了方法。

事件

使用 addEventListener() 或通过为此接口的 oneventname 属性分配事件监听器来监听这些事件:

error

当错误导致请求失败时触发。
也可以通过 onerror 属性处理。

success

IDBRequest 成功时被触发。
也可以通过 onsuccess 属性处理。

实例

在下面的代码片段中,我们异步打开数据库并发出请求;通过 onerroronsuccess 函数来处理成功和错误情况。有关完整的工作实例,请参阅我们的待办事项通知应用程序(查看在线实例。)

var db;

// 让我们打开数据库
var DBOpenRequest = window.indexedDB.open("toDoList", 4);

// 这两个事件处理程序用于当数据库成功/失败打开时,对数据库进行操作
DBOpenRequest.onerror = function(event) {
  note.innerHTML += '<li>加载数据库出错。</li>';
};

DBOpenRequest.onsuccess = function(event) {
  note.innerHTML += '<li>数据库已初始化。</li>';

  // 存储在 db 变量中打开数据库的结果。
  db = DBOpenRequest.result;
};

规范

规范 状态 备注
Indexed Database API
IDBRequest 的定义
推荐 初始定义。
Indexed Database API 2.0
IDBRequest 的定义
编者的草案 -

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持

24

23 — 57 webkit

支持

16

10 — 16 moz

101157
Available in workers 支持 未知37 未知 支持 未知
error

24

23 — 57 webkit

12

16

10 — 16 moz

101157
onerror

24

23 webkit

12

16

10 — 16 moz

101157
onsuccess

24

23 webkit

12

16

10 — 16 moz

101157
readyState

24

23 webkit

12

16

10 — 16 moz

101157
result

24

23 webkit

12

16

10 — 16 moz

101157
source

24

23 webkit

12

16

10 — 16 moz

101157
transaction

24

23 webkit

12

16

10 — 16 moz

101157

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持

24

23 — 57 webkit

24

23 — 57 webkit

支持22 未知228
Available in workers 支持 支持 支持37 未知 支持 未知
error

24

23 — 57 webkit

24

23 — 57 webkit

支持22 未知228
onerror 支持 支持 支持22 未知228
onsuccess 支持 支持 支持22 未知228
readyState 支持 支持 支持22 未知228
result 支持 支持 支持22 未知228
source 支持 支持 支持22 未知228
transaction 支持 支持 支持22 未知228

1. 部分的

相关链接