Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Problem mit asynchronen AJAX Calls und Programmlogik

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Problem mit asynchronen AJAX Calls und Programmlogik

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      StefSign last edited by

      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

      1 Reply Last reply Reply Quote 0
      • S
        StefSign last edited by

        …moment, dieses Problem mit "Async" müssten wir eigentlich überall haben wo Callback Funktionen verwendet werden, also auch beim Lesen von Files.

        Hm.

        Steve

        1 Reply Last reply Reply Quote 0
        • S
          smiling_Jack last edited by

          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.

          1 Reply Last reply Reply Quote 0
          • Bluefox
            Bluefox last edited by

            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.

            1 Reply Last reply Reply Quote 0
            • S
              StefSign last edited by

              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

              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate
              FAQ Cloud / IOT
              HowTo: Node.js-Update
              HowTo: Backup/Restore
              Downloads
              BLOG

              980
              Online

              31.8k
              Users

              80.0k
              Topics

              1.3m
              Posts

              3
              5
              1668
              Loading More Posts
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes
              Reply
              • Reply as topic
              Log in to reply
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
              The ioBroker Community 2014-2023
              logo