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
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden