2013-03-26 19 views
5

ich habe sqlite, phonegap, javascript verwendet und ich brauche Informationen von der sqlite db abrufen.sqlite synchrone

Ich bin der Lage, alle Informationen zu holen ich brauche, Einfügen, Aktualisieren usw.

Das Problem Javascript asynchron arbeitet ist. Das heißt, es verarbeitet alle anderen nachfolgenden Anweisungen, bevor alle notwendigen Informationen aus der Datenbank abgerufen werden.

Ich habe versucht Callbacks die ganze Zeit und ich bin es leid, da es Schwierigkeiten bei der Verwendung von Loops gibt. (nicht in der Lage, sqlite Abfragen innerhalb von Schleifen zu verwenden, da Schleife iteriert wird, bevor die aktuelle SQL-Abfrage verarbeitet wird, was nicht das ist, was ich will)

ist es möglich, diese db-Operationen synchron zu tun?

UPDATE eine neue Lösung von hier herausgefunden: webkit executesql sentence and loop problem

+0

Überprüfen Sie [caolan/async] (https://github.com/caolan/async), um Ihre asynchronen Vorgänge zu verwalten (z. B. asynchrone Operationen in einer Schleife in Serie auszuführen). – Chad

+0

Haben Sie herausgefunden, wie asynchrone Funktionen in einer Schleife verwendet werden? Ich habe gerade genau dieses Problem – kim366

+0

@ kim366 Was ich schließlich getan habe, ist Schleifen zu entfernen und alles zu Funktionsaufrufen zu ändern, die nicht elegant war. Sie können die neue Funktion "Warten" in JavaScript ausprobieren, um Ihnen zu helfen: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await Oder Sie können diesen Artikel lesen: https: // blog.lavrton.com/javascript-loops-how-to-handle-async-wait-6252dd3c795 –

Antwort

1

Nein, aber es gibt eine Bibliothek, die helfen können ...

http://html5sql.com/

ich nur es selbst begonnen haben, mit und es ermöglicht Ihnen, mehrere oder einzelne SQL-Anfragen mit 1 Rückruf auszuführen. Es kann genau das sein, was Sie brauchen :)

+0

Dank für Ihre schnelle Antwort bekommen. Die Bibliothek, auf die Sie verwiesen haben, ist zwar gut, erlaubt aber nicht synchrone asynchrone Operationen innerhalb einer Schleife. Da ich die Abfragen innerhalb einer Schleife abwickle, sind Rückrufe nicht ratsam. –

+0

Sie können den Anruf nicht synchron ausführen. Wenn es sich in einer Schleife befindet, müssen Sie eine Funktion aufrufen, die sich bei jedem Callback aufruft. – Archer

+0

oh .. das ist, was ich gerade tue und fragte diese Frage nur, weil der Code zu lange geht das .. sowieso, vielen Dank .. –

1

Sie können Siminov Framework verwenden. Es ermöglicht Ihnen, synchrone/asynchrone Aufrufe an die native SQLite-Datenbank zu senden. Es unterstützt die meisten der Hybrid-Frameworks wie (Cordova, React Native, Xamarin)

Allerdings, wenn Sie ein Hybrid-Apps mit JavaScript erstellen, dann würde ich empfehlen Asynchronous zu verwenden ruft, weil es einen Leistungsvorteil gegenüber synchrone Anrufe hat.

+0

Link über Siminov Framework ist tot oder unerreichbar –