IDBRequest
Baseline
Weitgehend verfügbar
*
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
* Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Das IDBRequest Interface der IndexedDB API bietet Zugriff auf die Ergebnisse asynchroner Anfragen an Datenbanken und Datenbankobjekte mittels Event-Handler-Attributen.
Instanzeigenschaften
Erbt auch Eigenschaften von EventTarget.
IDBRequest.errorSchreibgeschützt-
Gibt eine
DOMExceptionim Falle einer fehlgeschlagenen Anfrage zurück, die angibt, was schiefgelaufen ist. IDBRequest.resultSchreibgeschützt-
Gibt das Ergebnis der Anfrage zurück. Ist die Anfrage nicht abgeschlossen, ist das Ergebnis nicht verfügbar und es wird eine
InvalidStateErrorAusnahme ausgelöst. IDBRequest.sourceSchreibgeschützt-
Die Quelle der Anfrage, wie etwa ein
IDBIndexoder einIDBObjectStore. Wenn keine Quelle existiert (wie bei einem Aufruf vonIDBFactory.open), wird null zurückgegeben. IDBRequest.readyStateSchreibgeschützt-
Der Zustand der Anfrage. Jede Anfrage beginnt im
pendingZustand. Der Zustand ändert sich zudone, wenn die Anfrage erfolgreich abgeschlossen ist oder ein Fehler auftritt. IDBRequest.transactionSchreibgeschützt-
Die Transaktion der Anfrage. Diese Eigenschaft kann bei bestimmten Anfragen null sein, zum Beispiel bei denen, die von
IDBFactory.openzurückgegeben werden, es sei denn, ein Upgrade ist notwendig. (Sie verbinden sich lediglich mit einer Datenbank, daher gibt es keine Transaktion, die zurückgegeben werden könnte).
Instanzmethoden
Keine Methoden, aber erbt Methoden von EventTarget.
Ereignisse
Diese Ereignisse können mit addEventListener() abgehört oder indem ein Event-Listener der oneventname Eigenschaft dieses Interface zugewiesen wird:
Beschreibung
Die Ergebnisse aller Lese- und Schreiboperationen in der Datenbank werden mit einem Anfrageobjekt dieses Typs gemeldet.
Das Anfrageobjekt enthält zunächst keine Informationen über das Ergebnis der Operation, aber sobald Informationen verfügbar werden, wird ein Ereignis auf der Anfrage ausgelöst, und die Informationen werden über die Eigenschaften der IDBRequest Instanz zugänglich.
Alle asynchronen Operationen geben sofort eine IDBRequest Instanz zurück. Jede Anfrage hat einen readyState, der auf den 'pending' Zustand gesetzt ist; dieser ändert sich zu 'done', wenn die Anfrage abgeschlossen oder fehlgeschlagen ist. Wenn der Zustand auf done gesetzt wird, liefert jede Anfrage ein result und ein error, und ein Ereignis wird auf der Anfrage ausgelöst. Wenn der Zustand noch pending ist, führt jeder Versuch, auf result oder error zuzugreifen, zu einer InvalidStateError Ausnahme.
Einfach ausgedrückt, alle asynchronen Methoden geben ein Anfrageobjekt zurück. Wenn die Anfrage erfolgreich abgeschlossen wurde, wird das Ergebnis über die result Eigenschaft verfügbar gemacht, und ein Ereignis, das den Erfolg signalisiert, wird bei der Anfrage ausgelöst (success). Wenn ein Fehler bei der Durchführung der Operation auftritt, wird die Ausnahme über die error Eigenschaft verfügbar gemacht und ein Fehlerereignis wird ausgelöst (error).
Die Daten in result hängen von der aufgerufenen Operation ab.
Das Interface IDBOpenDBRequest ist von IDBRequest abgeleitet.
Beispiel
>Grundlegende Verwendung
Im folgenden Code-Snippet öffnen wir eine Datenbank asynchron und stellen eine Anfrage; Event-Listener für error und success sind enthalten, um Erfolgs- und Fehlerfälle zu behandeln.
Für ein vollständiges funktionierendes Beispiel, sehen Sie sich unsere To-do Notifications App an (Beispiel live ansehen.)
let db;
// Let us open our database
const DBOpenRequest = window.indexedDB.open("toDoList", 4);
// Handle the case where there is an error opening the database
DBOpenRequest.addEventListener("error", (event) => {
note.appendChild(document.createElement("li")).textContent =
"Error loading database.";
});
// Handle the case where the database opens successfully
DBOpenRequest.addEventListener("success", (event) => {
note.appendChild(document.createElement("li")).textContent =
"Database initialized.";
// store the result of opening the database.
db = DBOpenRequest.result;
});
Spezifikationen
| Spezifikation |
|---|
| Indexed Database API 3.0> # request-api> |
Browser-Kompatibilität
Siehe auch
- IndexedDB verwenden
- Transaktionen starten:
IDBDatabase - Transaktionen verwenden:
IDBTransaction - Einen Schlüsselbereich festlegen:
IDBKeyRange - Daten abrufen und ändern:
IDBObjectStore - Cursor verwenden:
IDBCursor - Referenzbeispiel: To-do Notifications (Das Beispiel live ansehen).