über die HTML5-Datenbank (sqlite) gesprochen, habe ich kürzlich Erfolg / Fehler-Rückrufe von% transaction
und executeSql
-Funktionen verwendet. Ich habe herausgefunden, dass für diese beiden Funktionen die Reihenfolge der Erfolg / Fehler-Rückrufe umgekehrt ist, zum Beispiel:
Transaktion
%Vor%executeSql
%Vor%Wahrscheinlich ist es nicht wichtig zu wissen, aber ich würde gerne wissen, ob es einen Grund für diese umgekehrte Reihenfolge gibt. IMHO, wäre es nützlich, die gleiche Rückrufreihenfolge für jede Funktion zu haben, so wie Sie gelernt haben um einen zu benutzen, weißt du, wie alle anderen arbeiten!
Vielen Dank im Voraus, Grüße
Ich verweise hier auf [das wichtigste RFC-Dokument] : und es ist erwähnenswert, dass
Diese Spezifikation befindet sich nicht mehr in der aktiven Wartung und im Web Die Arbeitsgruppe "Anwendungen" beabsichtigt nicht, sie weiter aufrechtzuerhalten.
Trotzdem zurück zur Frage. Die Gründe dafür können in den Archiven der Diskussions-Mailinglisten
begraben seinIch kann nachvollziehen, wie Leute normalerweise eine API erstellen.
Zunächst ist zu beachten, dass die verschiedenen Callback-Argumente beider Funktionen optional sind. Daher möchten Sie sie von den am häufigsten verwendeten zu den am wenigsten verwendeten Typen anordnen. Wenn Sie es in die entgegengesetzte Reihenfolge bringen, zwingen Sie Leute, leere Funktionen zu deklarieren.
In einer Transaktion ist also die Fehlerbehandlung wichtiger als die Erfolgskontrolle. Transaktionen sind "entworfen", um fehlerfrei zu funktionieren, und extrem wichtig, weil wir erwarten, dass sie von Zeit zu Zeit versagen und ihren Fehler behandeln.
Im Gegensatz dazu sollte eine Abfrage ihre Ergebnisse zurückgeben, ohne zu sehr zu versagen.
Während, wenn wir Erfolg haben, und dies sollte wirklich häufig geschehen, wollen wir das Ergebnis einer solchen Abfrage verarbeiten, und das ist, wenn Sie das SQLStatementCallback callback
verwenden, das kein SQLVoidCallback successCallback
ist.
Dieser Rückruf dient nicht zur Behandlung von Erfolg, sondern zur expliziten Behandlung von Anweisungsergebnissen (d. H. Zur Verarbeitung der Ergebnisse).
Vergleichen Sie die transaction
und die executeSql
Deklarationen hier.
Tags und Links javascript html5 callback