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. Beispiele mit Promises

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.5k

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Beispiele mit Promises

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
3 Beiträge 2 Kommentatoren 477 Aufrufe 1 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.
  • M Offline
    M Offline
    Marty56
    schrieb am zuletzt editiert von Marty56
    #1

    Ich experimentieren ein bisschen mit Promisses herum und möchte einen synchronen setState() machen. Das ist meine Lösung bisher

    function setState_sync(id,value) {
      return new Promise(function(resolve, error) {
        setState (id,value,function(){
            setTimeout(function() {resolve();}, 1000);
        });
      });
    }
    (async () => {
        await setState_sync("Test",false);
        log("State hat: " + getState("Test").val);
    })();
    

    Ich verzögere um 1 Sekunde, bis ich den State abfrage. So super finde ich das nicht. Ich fände es besser, bis ich eine Acknowledge von der Datenbank (in meinem Fall redis) bekommen würde.
    Gibt es da eine bessere Lösung?

    HW:NUC (16 GB Ram)
    OS: Debian Bullseye, Promox V7, node v16.x npm 8.19.3

    1 Antwort Letzte Antwort
    0
    • M Offline
      M Offline
      Marty56
      schrieb am zuletzt editiert von Marty56
      #2

      Noch ein anderes Beispiel

      Nutzung: Wiederholte Ausgabe einer Warnung, bis zum Eintreffen eines Abbruchs.

      //-------- Klasse zur wiederholten Ausgabe von Warnungen z.b.  auf den Lautsprechern -----
      
      function sleep(ms) {
        return new Promise(resolve => setTimeout(resolve, ms));
      }
      class Repeat_Warning {
        constructor() {
          this.text = "";
          this.duration = 0;
          this.repeat = true;
        }
        start(text,duration) {
          this.text = text;
          this.duration = duration;  
          this.repeat = true;
          (async () => {
              while (this.repeat) {
             // hier kann die individuelle Text2Speech Ausgabe stehen durch log ersetzt
                  log("this.text");
                  await sleep(this.duration);
              }
          })();
        }
        stop() {
          this.repeat = false;
        }
      }
      //Anwendung
      var Warning = new Repeat_Warning();
      // Der Text "Ausgabe Test!" wird mit einer Frequenz von 2 Sekunden wiederholt
      // ausgegeben und nach 10 Sekunden wieder beendet
      
      (async () => {
          Warning.start("Ausgabe Test!",2000);
          await sleep(10000);
          Warning.stop();
      })();
      

      HW:NUC (16 GB Ram)
      OS: Debian Bullseye, Promox V7, node v16.x npm 8.19.3

      1 Antwort Letzte Antwort
      0
      • N Offline
        N Offline
        Nahasapee
        schrieb am zuletzt editiert von
        #3

        ich hatte mal ne Wrapperklasse gebastelt
        in der ich setstate und createstate
        verwurstet habe, findest du hier:

        https://github.com/Nahasapeemapetilon/MyTelegramMenu/blob/master/lib/iobrokerfunctionswithpromise.js

        genutzt habe ich es zum Beispiel hier:
        https://github.com/Nahasapeemapetilon/MyTelegramMenu/blob/master/lib/menuitemreport.js
        Viele Grüße

        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

        727

        Online

        32.6k

        Benutzer

        82.1k

        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