NEWS
Timeout / Cleartimeout
-
Hallo ihr
Ich versuche mich gerade einwenig mit Javascript
Ich habe noch ein verständnis Problem gerade mit cleartimeout.
if (getState(online_1).val || getState(online_2).val) { setState(jalosie_s_s7, true); } else { setState(jalosie_s_s7, false); var timeout = setTimeout(function() { sendTo("pushover.0", "send", { message: 'Shelly 2.5 im Büro ist Offline', sound: "siren" }); }, 20000); //240000 } if (getState(jalosie_s_s7).val) { (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})(); }
Der Sciptblock funktioniert das ist es jetzt nicht aber kann man den cleartimeout kürzer machen ??
Habe ihn jetzt 1 zu 1 aus Blockly kopiert. -
warum geht nicht nur
clearTimeout(timeout)
??
oder reicht
clearTimeout(timeout); timeout = null;
-
@Pat sagte:
warum geht nicht nur
Das genügt zum Stoppen des Timers.
@Pat sagte in Timeout / Cleartimeout:
oder reicht
Die Version braucht man, wenn an anderer Stelle ein laufender Timer abgefragt werden soll.
-
erstmal vielen dank für deine antwort !!
Ich habe nochmal ein wenig gespiellt und ich bekomme die funktion nicht abgebrochen. Er schreibt immer nach 3sek in die console Hallo.
createState('Test.Button1', { type: 'boolean', def: false}); var taster1 = 'javascript.0.Test.Button1'; on({id: taster1, change: "any"}, function (obj) { if (getState(taster1).val) { var timeout = setTimeout(function() { console.log('Hallo'); }, 3000); } else { clearTimeout(timeout); timeout = null; } });
-
ok fehler gefunden.
Ich habe den "var timeout" im if gesetzt. Als ich ihn im header gesetzt habe ging es.
createState('Test.Button1', { type: 'boolean', def: false}); var taster1 = 'javascript.0.Test.Button1'; var timeout on({id: taster1, change: "any"}, function (obj) { if (getState(taster1).val) { timeout = setTimeout(function() { console.log('Hallo'); }, 3000); } else { clearTimeout(timeout); timeout = null; } });
-
Ok nochmal eine ergänzung. Wenn der Eingang pulsiert innerhalb der eingestelltenzeit wird der Code trotzdem ausgeführt.
mit einer nicht timeout abfrage im if hat dies verhindert.
createState('Test.Button1', { type: 'boolean', def: false}); var taster1 = 'javascript.0.Test.Button1'; var timeout on({id: taster1, change: "ne"}, function (obj) { if (getState(taster1).val && !timeout) { timeout = setTimeout(function() { console.log('Hallo'); }, 3000); } else { clearTimeout(timeout); timeout = null; } });
Falls ich ein fehler gemacht habe (z.B formatierung) bitte schreiben da ich noch Java / Javascript neuling bin.