Beide Befehle sind derart implementiert, wie man es sich unter einer synchronen und asynchronen Programmierung vorstellen kann.
Im synchronen Fall wird der Code in der Zeile der Methode Update() ausgeführt, bevor die nächste Zeile betrachtet wird.
Für die asynchronen Methoden ist das nicht der Fall. Sie wird dann ausgeführt, wenn die Ressource dafür vorhanden ist (ohne andere Operationen zu blockieren).
Wichtig ist im asynchronen Fall, dass eine "Completed"-Funktion eingebaut wird, falls aktualisierten Daten in der Tabelle im weiteren Verlauf des Lua Skripts benötigt werden.
local task = DB:UpdateAsync(this, objectName, guid, values)
task:AddEvent("completed", "UpdateCompleted")
Hier ein paar Entscheidungshilfen für oder gegen einen
Synchronen Aufruf:
- optimal für kleine Operationen auf der Datenbank mit sofortigem Ergebnis.
- Einfacher Aufruf im Code: In der Code-Zeile nach meinem Datenbankzugriff kann ich davon ausgehen, dass alle Operationen auf Datenbank und Server (inklusive Events) durchgeführt wurden.
- Blockiert das UI im geöffneten Tab während der Ausführung.
Asynchronen Aufruf:
- für größere Funktionen / Prozesse, die im Hintergrund ausgeführt werden können.
- komplizierteres Programmieren, falls das Ergebnis der Operation im Code benötigt wird (siehe oben).
- blockiert den Tab nicht.
- Es sind parallele Datenbankzugriffe möglich (kann auch sehr gefährlich sein).