IDBTransaction: abort-Ereignis
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.
Das abort-Ereignis wird ausgelöst, wenn eine IndexedDB-Transaktion abgebrochen wird.
Dies kann aus einem der folgenden Gründe geschehen:
- Ungültige Anfragen (z. B. der Versuch, denselben Schlüssel zweimal hinzuzufügen oder denselben Indexschlüssel einzufügen, wenn für den Schlüssel eine Eindeutigkeitsbedingung gilt).
- Ein expliziter Aufruf von
abort(). - Eine nicht abgefangene Ausnahme im Erfolgs- oder Fehlerhandler der Anfrage.
- Ein Ein-/Ausgabefehler (z. B. wenn das Schreiben auf den Datenträger fehlschlägt, weil dieser getrennt wurde, oder aufgrund eines anderen Betriebssystem- oder Hardwarefehlers).
- Überschreitung des Speicherkontingents.
Dieses nicht abbrechbare Ereignis steigt zum zugehörigen IDBDatabase-Objekt auf.
Syntax
Verwenden Sie den Ereignisnamen in addEventListener():
addEventListener("abort", (event) => { })
Alternativ können Sie den Handler der Event-Handler-Eigenschaft der Schnittstelle zuweisen:
onabort = (event) => { }
Ereignistyp
Ein generisches Event.
Aufsteigen des Ereignisses
Dieses Ereignis steigt zu IDBDatabase auf. Die Eigenschaft event.target verweist auf das IDBTransaction-Objekt, von dem das Ereignis ausgeht.
Weitere Informationen finden Sie unter Aufsteigen von Ereignissen.
Beispiele
Dieses Beispiel öffnet eine Datenbank (und erstellt sie, falls sie noch nicht existiert), öffnet dann eine Transaktion, fügt einen Listener für das abort-Ereignis hinzu und bricht anschließend die Transaktion ab, um das Ereignis auszulösen.
// Open the database
const DBOpenRequest = window.indexedDB.open("toDoList", 4);
DBOpenRequest.onupgradeneeded = (event) => {
const db = event.target.result;
db.onerror = () => {
console.log("Error creating database");
};
// Create an objectStore for this database
const objectStore = db.createObjectStore("toDoList", {
keyPath: "taskTitle",
});
// define what data items the objectStore will contain
objectStore.createIndex("hours", "hours", { unique: false });
objectStore.createIndex("minutes", "minutes", { unique: false });
objectStore.createIndex("day", "day", { unique: false });
objectStore.createIndex("month", "month", { unique: false });
objectStore.createIndex("year", "year", { unique: false });
};
DBOpenRequest.onsuccess = (event) => {
const db = DBOpenRequest.result;
// open a read/write db transaction, ready for adding the data
const transaction = db.transaction(["toDoList"], "readwrite");
// add a listener for `abort`
transaction.addEventListener("abort", () => {
console.log("Transaction was aborted");
});
// abort the transaction
transaction.abort();
};
Dasselbe Beispiel, jedoch mit Zuweisung des Event-Handlers an die Eigenschaft onabort (beachten Sie, dass dadurch andere über onabort hinzugefügte Event-Listener ersetzt werden, sofern vorhanden):
// Open the database
const DBOpenRequest = window.indexedDB.open("toDoList", 4);
DBOpenRequest.onupgradeneeded = (event) => {
const db = event.target.result;
db.onerror = () => {
console.log("Error creating database");
};
// Create an objectStore for this database
const objectStore = db.createObjectStore("toDoList", {
keyPath: "taskTitle",
});
// define what data items the objectStore will contain
objectStore.createIndex("hours", "hours", { unique: false });
objectStore.createIndex("minutes", "minutes", { unique: false });
objectStore.createIndex("day", "day", { unique: false });
objectStore.createIndex("month", "month", { unique: false });
objectStore.createIndex("year", "year", { unique: false });
};
DBOpenRequest.onsuccess = (event) => {
const db = DBOpenRequest.result;
// open a read/write db transaction, ready for adding the data
const transaction = db.transaction(["toDoList"], "readwrite");
// add a listener for `abort`
transaction.onabort = (event) => {
console.log("Transaction was aborted");
};
// abort the transaction
transaction.abort();
};
Spezifikationen
| Spezifikation |
|---|
| Indexed Database API 3.0> # eventdef-idbtransaction-abort> |