Beim Lesen der HTML5 IndexedDB-Spezifikation Ich hatte einige Zweifel an seinem asynchronen Anforderungsmodell. Beim Betrachten der API-Beispiel anfordernder open
-Methode wird verwendet, um eine asynchrone Anforderung zu starten.
var request = indexedDB.open('AddressBook', 'Address Book');
request.onsuccess = function(evt) {...};
request.onerror = function(evt) {...};
Zum Zeitpunkt des Starts dieser Anfrage sind noch keine Event-Handler definiert.
- Ist das nicht eine Race Condition?
- Was passiert, wenn die
open
-Methode erfolgreich ist, bevor der Javascript-Interpreter die Zuweisung an ausführtonsuccess
? - Oder wird die Anfrage erst wirklich gestartet, wenn beide Callbacks registriert sind?
Meiner Meinung nach wäre eine API wie die folgende viel logischer:
db.open('AddressBook', 'Address Book', {
onsuccess: function(e) { ... },
onerror : function(e) { ... }
});