IDBRequest
interface of the IndexedDB API provides access to results of asynchronous requests to databases and database objects using event handler attributes. Each reading and writing operation on a database is done using a request.
The request object does not initially contain any information about the result of the operation, but once information becomes available, an event is fired on the request, and the information becomes available through the properties of the
IDBRequest
实例。
All asynchronous operations immediately return an
IDBRequest
instance. Each request has a
readyState
that is set to the
'pending'
state; this changes to
'done'
when the request is completed or fails. When the state is set to
done
, every request returns a
result
和
error
, and an event is fired on the request. When the state is still
pending
, any attempt to access the
result
or
error
引发
InvalidStateError
异常。
In plain words, all asynchronous methods return a request object. If the request has been completed successfully, the result is made available through the
result
property and an event indicating success is fired at the request (
IDBRequest.onsuccess
). If an error occurs while performing the operation, the exception is made available through the
result
property and an error event is fired (
IDBRequest.onerror
).
The interface
IDBOpenDBRequest
is derived from
IDBRequest
.
<div id="interfaceDiagram" style="display: inline-block; position: relative; width: 100%; padding-bottom: 11.666666666666666%; vertical-align: middle; overflow: hidden;"><svg style="display: inline-block; position: absolute; top: 0; left: 0;" viewbox="-50 0 600 70" preserveAspectRatio="xMinYMin meet"><a xlink:href="../API/EventTarget.html" target="_top"><rect x="1" y="1" width="110" height="50" fill="#fff" stroke="#D4DDE4" stroke-width="2px" /><text x="56" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">EventTarget</text></a><polyline points="111,25 121,20 121,30 111,25" stroke="#D4DDE4" fill="none"/><line x1="121" y1="25" x2="151" y2="25" stroke="#D4DDE4"/><a xlink:href="../API/IDBRequest" target="_top"><rect x="151" y="1" width="100" height="50" fill="#F4F7F8" stroke="#D4DDE4" stroke-width="2px" /><text x="201" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">IDBRequest</text></a></svg></div>
a:hover text { fill: #0095DD; pointer-events: all;}
Also inherits properties from
EventTarget
.
IDBRequest.error
只读
DOMException
in the event of an unsuccessful request, indicating what went wrong.
IDBRequest.result
只读
Returns the result of the request. If the the request failed and the result is not available, an InvalidStateError exception is thrown.
IDBRequest.source
只读
IDBIndex
或
IDBObjectStore
. If no source exists (such as when calling
IDBFactory.open
), it returns null.
IDBRequest.readyState
只读
pending
state. The state changes to
done
when the request completes successfully or when an error occurs.
IDBRequest.transaction
只读
IDBFactory.open
unless an upgrade is needed. (You're just connecting to a database, so there is no transaction to return).
No methods, but inherits methods from
EventTarget
.
监听这些事件使用
addEventListener()
或通过把事件监听器赋值给
on
eventname
特性为此接口。
error
onerror
特性。
success
IDBRequest
succeeds.
onsuccess
特性。
In the following code snippet, we open a database asynchronously and make a request;
onerror
and
onsuccess
functions are included to handle the success and error cases. For a full working example, see our
待办通知
app (
实时查看范例
)。
var db;
// Let us open our database
var DBOpenRequest = window.indexedDB.open("toDoList", 4);
// these two event handlers act on the database being
// opened successfully, or not
DBOpenRequest.onerror = function(event) {
note.innerHTML += '<li>Error loading database.</li>';
};
DBOpenRequest.onsuccess = function(event) {
note.innerHTML += '<li>Database initialised.</li>';
// store the result of opening the database.
db = DBOpenRequest.result;
};
| 规范 | 状态 | 注释 |
|---|---|---|
|
索引数据库 API 2.0
The definition of 'IDBRequest' in that specification. |
推荐 | 初始定义。 |
|
索引数据库 API 草案
The definition of 'IDBRequest' in that specification. |
推荐 |
| 桌面 | 移动 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
IDBRequest
|
Chrome
24
|
Edge 12 |
Firefox
16
|
IE 部分支持 10 | Opera 15 | Safari 7 |
WebView Android
Yes
|
Chrome Android
25
|
Firefox Android 22 | Opera Android 14 | Safari iOS 8 |
Samsung Internet Android
1.5
|
error
|
Chrome
24
|
Edge 12 |
Firefox
16
|
IE 部分支持 10 | Opera 15 | Safari 7 |
WebView Android
Yes
|
Chrome Android
25
|
Firefox Android 22 | Opera Android 14 | Safari iOS 8 |
Samsung Internet Android
1.5
|
error
event
|
Chrome
24
|
Edge 12 |
Firefox
16
|
IE 部分支持 10 | Opera 15 | Safari 7 | WebView Android Yes | Chrome Android Yes | Firefox Android 22 | Opera Android 14 | Safari iOS 8 | Samsung Internet Android Yes |
onerror
|
Chrome
24
|
Edge 12 |
Firefox
16
|
IE 部分支持 10 | Opera 15 | Safari 7 | WebView Android Yes | Chrome Android Yes | Firefox Android 22 | Opera Android 14 | Safari iOS 8 | Samsung Internet Android Yes |
onsuccess
|
Chrome
24
|
Edge 12 |
Firefox
16
|
IE 部分支持 10 | Opera 15 | Safari 7 | WebView Android Yes | Chrome Android Yes | Firefox Android 22 | Opera Android 14 | Safari iOS 8 | Samsung Internet Android Yes |
readyState
|
Chrome
24
|
Edge 12 |
Firefox
16
|
IE 部分支持 10 | Opera 15 | Safari 7 | WebView Android Yes | Chrome Android Yes | Firefox Android 22 | Opera Android 14 | Safari iOS 8 | Samsung Internet Android Yes |
result
|
Chrome
24
|
Edge 12 |
Firefox
16
|
IE 部分支持 10 | Opera 15 | Safari 7 | WebView Android Yes | Chrome Android Yes | Firefox Android 22 | Opera Android 14 | Safari iOS 8 | Samsung Internet Android Yes |
source
|
Chrome
24
|
Edge 12 |
Firefox
16
|
IE 部分支持 10 | Opera 15 | Safari 7 | WebView Android Yes | Chrome Android Yes | Firefox Android 22 | Opera Android 14 | Safari iOS 8 | Samsung Internet Android Yes |
success
event
|
Chrome
24
|
Edge 12 |
Firefox
16
|
IE 部分支持 10 | Opera 15 | Safari 7 | WebView Android Yes | Chrome Android Yes | Firefox Android 22 | Opera Android 14 | Safari iOS 8 | Samsung Internet Android Yes |
transaction
|
Chrome
24
|
Edge 12 |
Firefox
16
|
IE 部分支持 10 | Opera 15 | Safari 7 | WebView Android Yes | Chrome Android Yes | Firefox Android 22 | Opera Android 14 | Safari iOS 8 | Samsung Internet Android Yes |
| Available in workers | Chrome Yes | Edge ≤79 | Firefox 37 | IE ? | Opera Yes | Safari ? | WebView Android Yes | Chrome Android Yes | Firefox Android 37 | Opera Android Yes | Safari iOS ? | Samsung Internet Android Yes |
完整支持
部分支持
兼容性未知
要求使用供应商前缀或不同名称。
IDBDatabase
IDBTransaction
IDBKeyRange
IDBObjectStore
IDBCursor
IDBRequest
IDBCursor
IDBCursorSync
IDBCursorWithValue
IDBDatabase
IDBDatabaseException
IDBDatabaseSync
IDBEnvironment
IDBEnvironmentSync
IDBFactory
IDBFactorySync
IDBIndex
IDBIndexSync
IDBKeyRange
IDBObjectStore
IDBObjectStoreSync
IDBOpenDBRequest
IDBTransaction
IDBTransactionSync
IDBVersionChangeEvent
IDBVersionChangeRequest