Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Verhalten im Loop
#1
Ich habe bei ioBroker ein Problem eröffnet. Das ist ziemlich länglich geworden - es geht mir im Wesentlichen jetzt um diesen Post.



Code:
var switchStatus, Intervall;
on({id: "shelly.0.SHSW-1#E8DB84D401CC#1.ext.switch1"/*Switch*/, change: "ne"}, async function (obj) {
  var value = obj.state.val;
  var oldValue = obj.oldState.val;
  switchStatus = (obj.state ? obj.state.val : "");
  console.log(('Scriptanfang Status: ' + String(switchStatus)));
  if (switchStatus == true) {
    Intervall = setInterval(async function () {
      console.log(('Loopanfang Status: ' + String(switchStatus)));
      switchStatus = (obj.state ? obj.state.val : "");
    }, 20000);
  } else {
    console.log(('Else Status: ' + String(switchStatus)));
    (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})();
  }
});


Die Variable "switchStatus" wird aus einem Objekt ausgelesen und in der gezeigten "if/then/else" Abfrage ausgewertet.

Im "then"-Zweig wird, wie man sieht, im Loop eine Meldung ausgegeben udn der Wert der Variablen "switchStatus" neu ermittelt. Aber es gibt keine Ende-Bedingung. Meines Erachtens müsste der Loop damit eben endlos laufen. Tatsächlich wird, wenn der "switchStatus" auf false geht, der "else"-Zweig angestoßen. Die Logik verstehe ich nicht, die "if"-Abfrage ist Vergangenheit, wieso weiß "setInterval()" was von dem else-Zweig?


Irgendeine logische Erklärung wäre mir lieb.
Zitieren


Nachrichten in diesem Thema
Verhalten im Loop - von GombersJS - 05.10.2022, 10:00
RE: Verhalten im Loop - von admin - 06.10.2022, 12:04
RE: Verhalten im Loop - von rzscout - 06.10.2022, 12:53

Gehe zu:


Benutzer, die gerade dieses Thema anschauen:
1 Gast/Gäste