HTML5-Datenbank - Transaktion VS executeSql Callback-Reihenfolge

9

ü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

    
BeNdErR 24.06.2013, 07:44
quelle

1 Antwort

1

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 sein

Ich 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.

    
Kuzeko 12.04.2016 14:30
quelle

Tags und Links