Lutz T.: Rechenleistung freigeben / Sleep

Beitrag lesen

Hallo Niggel

ID = setInterval("Warte()", 10);

function Warte(){
  if (Wert != "OK") {
    ID = setInterval("Warte()", 10);
  }
}

so müsste es gehen.

nein auch nicht. setInterval rufst ja die Funktion alle 10 ms auf. So wie du sie aufbaust, wird mit jedem Aufruf erneut ein setInterval initialisiert.

2 Möglichkeiten gibt es:

ID = window.setTimeout("Warte()", 10);

function Warte(){
  if (Wert != "OK") {
//Wert stimmt nicht, neuer Wartezyklus wird eingeleitet
    ID = window.setTimeout("Warte()", 10);
  }
}

oder

ID = window.setInterval("Warte()", 10);

function Warte(){
  if (Wert == "OK") {
//Wert stimmt, Intervallschleife wird beendet
    ID = window.clearInterval("Warte()", 10);
  }
}

Mehr dazu:
http://selfhtml.teamone.de/javascript/objekte/window.htm#clear_interval
http://selfhtml.teamone.de/javascript/objekte/window.htm#set_interval
http://selfhtml.teamone.de/javascript/objekte/window.htm#set_timeout

Viele Grüße

Antje

Hallo Antje,

da ist ein kleiner Fehler in Deiner Fehlerkorrektur:
anstelle ID = window.clearInterval("Warte()", 10);
muss window.clearInterval(ID); verwendet werden.
Siehe z.B. mein JavaScript-Spiel unter
http://www.tu-chemnitz.de/~luta/play/threefit.html

Viele Grüße, Lutz :-)