Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. Entwicklung
  4. Javascript Synchron

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.4k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.5k

Javascript Synchron

Scheduled Pinned Locked Moved Entwicklung
17 Posts 10 Posters 3.0k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • BluefoxB Offline
    BluefoxB Offline
    Bluefox
    wrote on last edited by
    #1

    Hallo,

    ich habe die Möglichkeit gefunden die Befehle im Javascript adapter synchron auszuführen:

    Es wird so was möglich sein:

    setState('A', true);
    sleep(2000); <= sehr ungenau
    setState('A', false);
    
    

    Dabei müssen die synchrone Funktionen anders heißen.

    mir fehlt nicht anders ein, als Suffix Sync

    setStateSync
    createStateSync
    setObjectSync
    extendObjectSync
    ...
    sleep
    
    

    Fehlt jemandem bessere Idee ein? Man kann noch statt callback einfach true schreiben oder ..

    setStateEx, 
    setStateS, 
    setState("A", val, ack, isSync (nicht callback))
    
    
    1 Reply Last reply
    0
    • apollon77A Offline
      apollon77A Offline
      apollon77
      wrote on last edited by
      #2

      Sync am Namen anzuhängen wäre zumindestens Kompatibel mit nodejs (siehe File-kram). Wäre dafür

      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
      1 Reply Last reply
      0
      • ruhr70R Offline
        ruhr70R Offline
        ruhr70
        wrote on last edited by
        #3

        Kann man auch mehr als einen Daumen hoch vergeben? :D

        Adapter: Fritzbox, Unify Circuit
        Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

        1 Reply Last reply
        0
        • apollon77A Offline
          apollon77A Offline
          apollon77
          wrote on last edited by
          #4

          EIne alternative ist die Frage "was sollte für die User der Standard sein"?

          ALso Vllt "setState" -> syncron und setStateAsync für die Profis? :-)

          Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

          • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
          • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
          1 Reply Last reply
          0
          • P Offline
            P Offline
            Pman
            wrote on last edited by
            #5

            @apollon77:

            EIne alternative ist die Frage "was sollte für die User der Standard sein"?

            ALso Vllt "setState" -> syncron und setStateAsync für die Profis? :-) `
            Damit würdest du jetzt alle jemals geschriebenen Skripte inkompatibel machen, ich glaube dafür ist es zu spät. :lol:

            1 Reply Last reply
            0
            • apollon77A Offline
              apollon77A Offline
              apollon77
              wrote on last edited by
              #6

              Oder sonderhandlung das sobald eine callback-Funktion beim aufruf verwendet wird es async wird :-)

              Die meisten "aktuellen Skripte "behaupte ich mal gehen von einer synchronen ausführung aus …

              Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

              • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
              • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
              1 Reply Last reply
              0
              • L Offline
                L Offline
                looxer01
                wrote on last edited by
                #7

                Hi,

                ich habe es bisher vermieden states anzulegen oder zu aendern und anschliessend zu verwenden oder abzufragen, zumindest innerhalb der gerade laufenden Routinen.

                Der synchrone Ablauf hat Vorteile, wenn es Abhängigkeiten gibt aber m.E. eine möglicherweise erhebliche Performanceeinbuße.

                Daher würde ich nicht unbedingt standardmaessig auf synchron umschalten. Oder denke ich falsch ?

                vG Looxer

                1 Reply Last reply
                0
                • ThisoftT Offline
                  ThisoftT Offline
                  Thisoft
                  wrote on last edited by
                  #8

                  Das finde ich super, dass jetzt die Möglichkeit der synchronen Abarbeitung geschaffen wird :D :D :D

                  Ich wäre eindeutig für das Suffix "Sync". Damit bleibt die Kompatibilität gewahrt und man sieht auf Anhieb was man verwendet hat. Ein (optionaler) Parameter beim Aufruf wäre zwar auch eine gangbare Möglichkeit - finde ich aber wesentlich unübersichtlicher als die Variante mit Suffix.

                  22 HM-Geräte; PivCCU2 auf RasPi

                  ioBroker-Multihost; Ubuntu-Master auf Intel-Atom und 3 RasPi-Clients

                  1 Reply Last reply
                  0
                  • paul53P Offline
                    paul53P Offline
                    paul53
                    wrote on last edited by
                    #9

                    @Thisoft:

                    Ich wäre eindeutig für das Suffix "Sync". Damit bleibt die Kompatibilität gewahrt und man sieht auf Anhieb was man verwendet hat. Ein (optionaler) Parameter beim Aufruf wäre zwar auch eine gangbare Möglichkeit - finde ich aber wesentlich unübersichtlicher als die Variante mit Suffix. `
                    Dem schließe ich mich an.
                    @looxer01:

                    …eine möglicherweise erhebliche Performanceeinbuße.

                    Daher würde ich nicht unbedingt standardmaessig auf synchron umschalten. Oder denke ich falsch ? `
                    Sehe ich auch so. Benötigt man die synchrone Variante wirklich ?

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    1 Reply Last reply
                    0
                    • BluefoxB Offline
                      BluefoxB Offline
                      Bluefox
                      wrote on last edited by
                      #10

                      Ich sehe die Anmerkung von apollon77 mit kein callback als gangbar.

                      1 Reply Last reply
                      0
                      • Jey CeeJ Online
                        Jey CeeJ Online
                        Jey Cee
                        Developer
                        wrote on last edited by
                        #11

                        Ich bin auch für Suffix 'sync'. Das drückt am deutlichsten aus was passiert und ist für Anfänger sicher einfach zu verstehen.

                        Gesendet von meinem m8 mit Tapatalk

                        Persönlicher Support
                        Spenden -> paypal.me/J3YC33

                        1 Reply Last reply
                        0
                        • frankjokeF Offline
                          frankjokeF Offline
                          frankjoke
                          wrote on last edited by
                          #12

                          Ich finde es eine gute Idee aber leider wird es nicht wirklich Synchron und einige Lewute noch mehr verwirren.

                          Es scheint so zu funktionieren dass nur die ioBroker-Funktionen synchron sind, aber nicht der restliche code.

                          Sorry, zu früh abgesendet:

                          Beispiel:

                          function inc(xxx) {
                          	var x = getState(xxx).val
                          	x = x +1;
                          	setState(xxx,x);
                          }
                          
                          inc(abc);
                          inc(abc);
                          
                          wird nicht funktionieren.
                          
                          

                          bin eher dafür neue Dinge mit neuen NodeJS-Sprachversionen zu implementieren,

                          Ein Beispiel sind Promises (wie ich sie verwende) oder auch in der ganz neuen Version Yields.

                          Frank,

                          NUC's, VM's und Raspi's unter Raspian, Ubuntu und Debian zum Testen.
                          Adapter die ich selbst beigesteuert habe: BMW, broadlink2, radar2, systeminfo, km200, xs1 und einige im Anmarsch!

                          1 Reply Last reply
                          0
                          • BluefoxB Offline
                            BluefoxB Offline
                            Bluefox
                            wrote on last edited by
                            #13

                            @fsjoke:

                            Ich finde es eine gute Idee aber leider wird es nicht wirklich Synchron und einige Lewute noch mehr verwirren.

                            Es scheint so zu funktionieren dass nur die ioBroker-Funktionen synchron sind, aber nicht der restliche code.

                            Sorry, zu früh abgesendet:

                            Beispiel:

                            function inc(xxx) {
                            	var x = getState(xxx).val
                            	x = x +1;
                            	setState(xxx,x);
                            }
                            
                            inc(abc);
                            inc(abc);
                            
                            wird nicht funktionieren.
                            
                            

                            bin eher dafür neue Dinge mit neuen NodeJS-Sprachversionen zu implementieren,

                            Ein Beispiel sind Promises (wie ich sie verwende) oder auch in der ganz neuen Version Yields. `
                            Genau das wird gehen Synchron.

                            1 Reply Last reply
                            0
                            • frankjokeF Offline
                              frankjokeF Offline
                              frankjoke
                              wrote on last edited by
                              #14

                              @Bluefox:

                              Genau das wird gehen Synchron. `

                              Dann gibt's auc einen dicken 'Daumen'-hoch von mir, am besten mit Sync-Endung :)

                              Frank,

                              NUC's, VM's und Raspi's unter Raspian, Ubuntu und Debian zum Testen.
                              Adapter die ich selbst beigesteuert habe: BMW, broadlink2, radar2, systeminfo, km200, xs1 und einige im Anmarsch!

                              1 Reply Last reply
                              0
                              • AlCalzoneA Offline
                                AlCalzoneA Offline
                                AlCalzone
                                Developer
                                wrote on last edited by
                                #15

                                Verstehe ich das richtig, dass das die Implementierung wird, die ich mir Anfang des Jahres gewünscht habe? Eine synchrone (Promise-) Kapselung um die asnychronen Methoden?

                                Denke dann macht xxxSync() Sinn, ist vom Verständnis her analog zu den NodeJS-Libraries.

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

                                1 Reply Last reply
                                0
                                • BluefoxB Offline
                                  BluefoxB Offline
                                  Bluefox
                                  wrote on last edited by
                                  #16

                                  @AlCalzone:

                                  Verstehe ich das richtig, dass das die Implementierung wird, die ich mir Anfang des Jahres gewünscht habe? Eine synchrone (Promise-) Kapselung um die asnychronen Methoden?

                                  Denke dann macht xxxSync() Sinn, ist vom Verständnis her analog zu den NodeJS-Libraries. `
                                  Ne.. Promise ist doch Asynchron.

                                  Es geht tatsächlich um synchrone Ausführung, damit die Leute, die aus Arduino- oder SPS- Welt kommen, immer noch zurecht kommen.

                                  1 Reply Last reply
                                  0
                                  • AlCalzoneA Offline
                                    AlCalzoneA Offline
                                    AlCalzone
                                    Developer
                                    wrote on last edited by
                                    #17

                                    Ahhh…

                                    Na dann ist der Name xxxSync erst recht passend. Find ich super!

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

                                    1 Reply Last reply
                                    0
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes


                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    541

                                    Online

                                    32.4k

                                    Users

                                    81.4k

                                    Topics

                                    1.3m

                                    Posts
                                    Community
                                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                    ioBroker Community 2014-2025
                                    logo
                                    • Login

                                    • Don't have an account? Register

                                    • Login or register to search.
                                    • First post
                                      Last post
                                    0
                                    • Home
                                    • Recent
                                    • Tags
                                    • Unread 0
                                    • Categories
                                    • Unreplied
                                    • Popular
                                    • GitHub
                                    • Docu
                                    • Hilfe