NEWS

Beispiele mit Promises



  • 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?



  • 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();
    })();
    


  • 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


Log in to reply
 

Suggested Topics

1.9k
Online

32.2k
Users

38.9k
Topics

526.7k
Posts