NEWS
Problem mit asynchronen AJAX Calls und Programmlogik
-
Morgen,
wie macht Ihr es mit den asynchronen GET Calls in Euren Adaptern? Ich bin bei der Spark Adapter Programmierung darauf gestossen…async. Calls wie AJAX rufen die Callback Funktion irgendwann mal auf (1 ms - 30 Sek?). Das Javascript Programm läuft normal weiter. Eine Loop mit festen Zeiten (oder setInterval) mach hier keinen Sinn mehr.
Noch komplexer wird es wenn es eine bestimmte Reihenfolge gibt. Klar, kann man in der AJAX Callback Funktion einen weiteren AJAX Call machen, aber das wird unübersichtlich.
Die einzige Lösung scheinen mir Promesis zu sein...
Steve
-
…moment, dieses Problem mit "Async" müssten wir eigentlich überall haben wo Callback Funktionen verwendet werden, also auch beim Lesen von Files.
Hm.
Steve
-
Auch da kann ich dir den S7 zum akuten empfehlen.
Ich starte da mehrere asynchrone Datenabrufe. Und wenn alle fertig sind starte ich den Vorgang über settimeout neu.
Nutzen tue ich dafür die async.js libary.
Du kannst auch die Zeit des ganzen Vorgangs messen und dann von einer festen Intervalle zeit abziehen. Dann kommst du wieder auf einen gleichmäßige pollintervall.
Die async.js bietet dir zum bz. Auch die Möglichkeit Funktionen serielle auszuführen. Dadurch bleibt es auch übersichtlich.
Würde es aber in deinen Fall wenn geht parallel machen.
-
Eigentlich es ist nicht so kompliziert. Du rufst im callback von erster Funktion den Aufruf von zweite und so weiter. Natürlich kannst du irgendwann im Callback-Hell landen, aber so 'hell ' ist das nicht. Und ja, du kannst promises verwenden. Muss aber wissen, dass Node. Js kein jquery hat, sondern andere Module, wie Q oder promises.
Und dann in der letzter callback - Funktion rufst du wider sich selbst mit setTimeout auf.
-
Hi Jungs,
danke für die Hinweise…gleich mal S7 und async.js ansehen. Und ja ...NodeJs hat kein jQuery, aber ich mache meine AJAX Calls momentan im Admin HTML (config des Spark Adapters).
Das mit dem Timeout ist mir neu, macht aber auf den ersten Blick Sinn.
Danke
Steve