Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. js callback asynchron problem

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    15
    1
    827

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    680

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.9k

js callback asynchron problem

Geplant Angeheftet Gesperrt Verschoben JavaScript
16 Beiträge 5 Kommentatoren 1.2k Aufrufe 6 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • AlCalzoneA Offline
    AlCalzoneA Offline
    AlCalzone
    Developer
    schrieb am zuletzt editiert von AlCalzone
    #5

    Eventuell sind die neuen async-Funktionen in 4.8.x was für dich @hanss
    https://forum.iobroker.net/topic/36999/neu-diverse-async-funktionen-im-javascript-adapter

    Damit lässt sich der Programmablauf trotz asynchronität schön steuern. Ich hab den obigen Schnipsel mal entsprechend umgebaut. Beachte das async vor der Funktion und await setStateAsync:

    async function raumzaehler() {
    	var Raumctr = 0;
    
    	// Schleife für jeden Raum ######################################
    	for (let i = 0; i < S_Raum.length; i++) {
    		const element = S_Raum[i];
    		if (SollTemp_akt != Temp_FOA && SollTemp_akt != Temp_Abw) {
    			await setStateAsync(Out_Root + D_Raum[index] + ".Man", SollTemp_akt, true);
    			setRT(index, element, SollTemp_akt); // function setRT wg. Callback
    			log("RaumzählerCB: " + Raumctr + " Index: " + RaumIndex);
    		} else {
    			setRT(index, element, SollTemp_akt);
    			log("Raumzähler: " + Raumctr + " Index: " + RaumIndex);
    		}
    	}
    	// Schleife für jeden Raum ######################################
    
    	// ##########   Script soll hier fortfahren, wenn  Schleife für jeden Raum durchlaufen ist.  ##########
    	log("Raumzähler nach allen Räumen: " + Raumctr + " Index: " + RaumIndex);
    
    }
    
    // Funktion aufrufen nicht vergessen!
    raumzaehler();
    

    Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

    liv-in-skyL OliverIOO 2 Antworten Letzte Antwort
    0
    • AlCalzoneA AlCalzone

      Eventuell sind die neuen async-Funktionen in 4.8.x was für dich @hanss
      https://forum.iobroker.net/topic/36999/neu-diverse-async-funktionen-im-javascript-adapter

      Damit lässt sich der Programmablauf trotz asynchronität schön steuern. Ich hab den obigen Schnipsel mal entsprechend umgebaut. Beachte das async vor der Funktion und await setStateAsync:

      async function raumzaehler() {
      	var Raumctr = 0;
      
      	// Schleife für jeden Raum ######################################
      	for (let i = 0; i < S_Raum.length; i++) {
      		const element = S_Raum[i];
      		if (SollTemp_akt != Temp_FOA && SollTemp_akt != Temp_Abw) {
      			await setStateAsync(Out_Root + D_Raum[index] + ".Man", SollTemp_akt, true);
      			setRT(index, element, SollTemp_akt); // function setRT wg. Callback
      			log("RaumzählerCB: " + Raumctr + " Index: " + RaumIndex);
      		} else {
      			setRT(index, element, SollTemp_akt);
      			log("Raumzähler: " + Raumctr + " Index: " + RaumIndex);
      		}
      	}
      	// Schleife für jeden Raum ######################################
      
      	// ##########   Script soll hier fortfahren, wenn  Schleife für jeden Raum durchlaufen ist.  ##########
      	log("Raumzähler nach allen Räumen: " + Raumctr + " Index: " + RaumIndex);
      
      }
      
      // Funktion aufrufen nicht vergessen!
      raumzaehler();
      
      liv-in-skyL Offline
      liv-in-skyL Offline
      liv-in-sky
      schrieb am zuletzt editiert von liv-in-sky
      #6

      @AlCalzone

      ich habe immer wieder probleme mit dem async und await - toll wäre es, wenn man so was wie mit dem type-script kurs für adapterentwickler machen würde - nur halt für dieses thema

      nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

      AlCalzoneA F 2 Antworten Letzte Antwort
      0
      • liv-in-skyL liv-in-sky

        @AlCalzone

        ich habe immer wieder probleme mit dem async und await - toll wäre es, wenn man so was wie mit dem type-script kurs für adapterentwickler machen würde - nur halt für dieses thema

        AlCalzoneA Offline
        AlCalzoneA Offline
        AlCalzone
        Developer
        schrieb am zuletzt editiert von
        #7

        @liv-in-sky https://gist.github.com/AlCalzone/d14b854b69ce5e8a03718336cc650a95
        😎

        Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

        liv-in-skyL 1 Antwort Letzte Antwort
        1
        • AlCalzoneA AlCalzone

          @liv-in-sky https://gist.github.com/AlCalzone/d14b854b69ce5e8a03718336cc650a95
          😎

          liv-in-skyL Offline
          liv-in-skyL Offline
          liv-in-sky
          schrieb am zuletzt editiert von
          #8

          @AlCalzone danke werd ich mal durcharbeiten

          nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

          1 Antwort Letzte Antwort
          0
          • liv-in-skyL liv-in-sky

            @AlCalzone

            ich habe immer wieder probleme mit dem async und await - toll wäre es, wenn man so was wie mit dem type-script kurs für adapterentwickler machen würde - nur halt für dieses thema

            F Offline
            F Offline
            fastfoot
            schrieb am zuletzt editiert von
            #9

            @liv-in-sky sagte in js callback asynchron problem:

            ....wenn man so was wie mit dem type-script kurs für adapterentwickler machen würde....

            gibt es dazu einen Link?

            iobroker läuft unter Docker auf QNAP TS-451+
            SkriptRecovery: https://forum.iobroker.net/post/930558

            liv-in-skyL 1 Antwort Letzte Antwort
            0
            • F fastfoot

              @liv-in-sky sagte in js callback asynchron problem:

              ....wenn man so was wie mit dem type-script kurs für adapterentwickler machen würde....

              gibt es dazu einen Link?

              liv-in-skyL Offline
              liv-in-skyL Offline
              liv-in-sky
              schrieb am zuletzt editiert von
              #10

              @fastfoot

              https://forum.iobroker.net/topic/36493/09-09-20-30-einsteiger-cursus-demonstration-von-typescript

              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

              F 1 Antwort Letzte Antwort
              1
              • liv-in-skyL liv-in-sky

                @fastfoot

                https://forum.iobroker.net/topic/36493/09-09-20-30-einsteiger-cursus-demonstration-von-typescript

                F Offline
                F Offline
                fastfoot
                schrieb am zuletzt editiert von
                #11

                @liv-in-sky cool, Danke!

                iobroker läuft unter Docker auf QNAP TS-451+
                SkriptRecovery: https://forum.iobroker.net/post/930558

                1 Antwort Letzte Antwort
                0
                • AlCalzoneA AlCalzone

                  Eventuell sind die neuen async-Funktionen in 4.8.x was für dich @hanss
                  https://forum.iobroker.net/topic/36999/neu-diverse-async-funktionen-im-javascript-adapter

                  Damit lässt sich der Programmablauf trotz asynchronität schön steuern. Ich hab den obigen Schnipsel mal entsprechend umgebaut. Beachte das async vor der Funktion und await setStateAsync:

                  async function raumzaehler() {
                  	var Raumctr = 0;
                  
                  	// Schleife für jeden Raum ######################################
                  	for (let i = 0; i < S_Raum.length; i++) {
                  		const element = S_Raum[i];
                  		if (SollTemp_akt != Temp_FOA && SollTemp_akt != Temp_Abw) {
                  			await setStateAsync(Out_Root + D_Raum[index] + ".Man", SollTemp_akt, true);
                  			setRT(index, element, SollTemp_akt); // function setRT wg. Callback
                  			log("RaumzählerCB: " + Raumctr + " Index: " + RaumIndex);
                  		} else {
                  			setRT(index, element, SollTemp_akt);
                  			log("Raumzähler: " + Raumctr + " Index: " + RaumIndex);
                  		}
                  	}
                  	// Schleife für jeden Raum ######################################
                  
                  	// ##########   Script soll hier fortfahren, wenn  Schleife für jeden Raum durchlaufen ist.  ##########
                  	log("Raumzähler nach allen Räumen: " + Raumctr + " Index: " + RaumIndex);
                  
                  }
                  
                  // Funktion aufrufen nicht vergessen!
                  raumzaehler();
                  
                  OliverIOO Offline
                  OliverIOO Offline
                  OliverIO
                  schrieb am zuletzt editiert von
                  #12

                  @AlCalzone

                  Async und await machen aus asynchronen Funktionen wieder synchrone Funktionen.
                  Das will er ja nicht

                  Meine Adapter und Widgets
                  TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                  Links im Profil

                  OliverIOO hanssH AlCalzoneA 3 Antworten Letzte Antwort
                  0
                  • OliverIOO OliverIO

                    @AlCalzone

                    Async und await machen aus asynchronen Funktionen wieder synchrone Funktionen.
                    Das will er ja nicht

                    OliverIOO Offline
                    OliverIOO Offline
                    OliverIO
                    schrieb am zuletzt editiert von OliverIO
                    #13

                    Hier mal ein kurzer Artikel, der auf einen Punkt eingeht, der die Funktionsweise der asynchronen Funktionen (callback oder auch promise basiert) erklärt

                    https://dev.to/steelvoltage/if-javascript-is-single-threaded-how-is-it-asynchronous-56gd

                    Meine Adapter und Widgets
                    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                    Links im Profil

                    1 Antwort Letzte Antwort
                    0
                    • OliverIOO OliverIO

                      @AlCalzone

                      Async und await machen aus asynchronen Funktionen wieder synchrone Funktionen.
                      Das will er ja nicht

                      hanssH Offline
                      hanssH Offline
                      hanss
                      schrieb am zuletzt editiert von
                      #14

                      @OliverIO
                      Vielen Dank, ich habe das jetzt so gelöst:

                      In die Funktion setRT() einen Raumzähler und das Script eingefügt, wenn alle Räume durchlaufen sind:
                      Das ist sehr übersichtlich und nicht so kompliziert wie async und await.
                      Ich glaube, das kapier ich nicht mehr.

                      setRT() {
                        Raumctr++
                        //mein Script
                      
                         if (S_Raum.length == Raumctr){              // letzter Raum
                             // Script hier, wenn alle Räume durchlaufen sind 
                             Raumctr=0        
                         }
                      }
                      
                      1 Antwort Letzte Antwort
                      0
                      • OliverIOO OliverIO

                        @AlCalzone

                        Async und await machen aus asynchronen Funktionen wieder synchrone Funktionen.
                        Das will er ja nicht

                        AlCalzoneA Offline
                        AlCalzoneA Offline
                        AlCalzone
                        Developer
                        schrieb am zuletzt editiert von AlCalzone
                        #15

                        @OliverIO wieso nicht? Wenn man etwas ausführen will, nachdem asynchrone Vorgänge durch sind, ist async/await genau das richtige Mittel.
                        Und IMO intuitiver als der callback Krempel. Nach dem Aufruf mit await ist es einfach fertig.

                        Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                        OliverIOO 1 Antwort Letzte Antwort
                        0
                        • AlCalzoneA AlCalzone

                          @OliverIO wieso nicht? Wenn man etwas ausführen will, nachdem asynchrone Vorgänge durch sind, ist async/await genau das richtige Mittel.
                          Und IMO intuitiver als der callback Krempel. Nach dem Aufruf mit await ist es einfach fertig.

                          OliverIOO Offline
                          OliverIOO Offline
                          OliverIO
                          schrieb am zuletzt editiert von
                          #16

                          @AlCalzone
                          Ah hatte einer seiner Antworten falsch interpretiert. Hab nochmal gelesen.
                          Wenn er mit seiner Lösung nun zufrieden ist, ist ja alles gut

                          Meine Adapter und Widgets
                          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                          Links im Profil

                          1 Antwort Letzte Antwort
                          0
                          Antworten
                          • In einem neuen Thema antworten
                          Anmelden zum Antworten
                          • Älteste zuerst
                          • Neuste zuerst
                          • Meiste Stimmen


                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          632

                          Online

                          32.6k

                          Benutzer

                          81.9k

                          Themen

                          1.3m

                          Beiträge
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                          ioBroker Community 2014-2025
                          logo
                          • Anmelden

                          • Du hast noch kein Konto? Registrieren

                          • Anmelden oder registrieren, um zu suchen
                          • Erster Beitrag
                            Letzter Beitrag
                          0
                          • Home
                          • Aktuell
                          • Tags
                          • Ungelesen 0
                          • Kategorien
                          • Unreplied
                          • Beliebt
                          • GitHub
                          • Docu
                          • Hilfe