IndexedDB API の IDBRequest インターフェイスは、イベントハンドラー属性を使用して、データベースおよびデータベースオブジェクトへの非同期要求の結果へのアクセスを提供します。データベースに対する各読み取りおよび書き込み操作は、要求を使用して実行されます。
リクエスト オブジェクトには、最初は操作の結果に関する情報は含まれていませんが、情報が利用可能になると、リクエストに応じてイベントが発生し、IDBRequest インスタンスのプロパティを通じて情報を利用できるようになります。
すべての非同期操作は、すぐに IDBRequest インスタンスを返します。各リクエストには、「pending(保留中)」の状態に設定された readyState があります。リクエストが完了するか失敗すると、これは「done(完了)」に変わります。状態が done に設定されている場合、すべてのリクエストは結果とエラーを返しますが、リクエストに応じてイベントが発生します。状態がまだ保留中の場合、結果またはエラーにアクセスしようとすると、InvalidStateError 例外が発生します。
簡単に言うと、すべての非同期メソッドはリクエスト オブジェクトを返します。リクエストが正常に完了した場合は、結果は result プロパティを介して利用可能になり、成功を示すイベントがリクエスト(IDBRequest.onsuccess)で発生します。操作中にエラーが発生した場合は、例外は result プロパティを通じて利用可能になり、エラーイベントが発生します(IDBRequest.onerror(en-US))。
インターフェイス IDBOpenDBRequestは、IDBRequest から派生しています。
注: この機能は Web Worker 内で利用可能です
また、EventTarget からプロパティを継承します。
メソッドはありませんが、EventTarget からメソッドを継承します。
addEventListener() を使用するか、このインターフェイスの oneventname プロパティにイベントリスナーを割り当てることにより、これらのイベントをリッスンします。
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;
};
| 表示内容: |
| 表示内容: |