Heim >Web-Frontend >js-Tutorial >Wie kann ich „clearInterval' verwenden, um zu verhindern, dass „setInterval' eine unerwünschte Schleife in meiner „doKeyDown'-Funktion erstellt?
Verwendung der Funktionen setInterval und clearInterval
Bei Betrachtung des folgenden Codeblocks:
function doKeyDown(event) { switch (event.keyCode) { case 32: /* Space bar was pressed */ if (x == 4) { setInterval(drawAll, 20); } else { setInterval(drawAll, 20); x += dx; } break; } }
Das Ziel ist Um das Problem im Code zu lösen, wird gehofft, dass die Funktion drawAll() nur einmal aufgerufen wird, anstatt eine Schleife zu erstellen, die die Funktion kontinuierlich aufruft.
So verwenden Sie „clearInterval“
Um dieses Problem zu lösen, können Sie die Funktion „clearInterval“ verwenden. Die Funktion „setInterval“ legt einen sich wiederholenden Timer fest und gibt ein Handle zurück, das an „clearInterval“ übergeben werden kann, um den Timer zu stoppen:
var handle = setInterval(drawAll, 20); // 当需要取消计时器时: clearInterval(handle); handle = 0; // 这样可以得知已经清除了计时器
In Browsern ist das Handle garantiert eine Zahl ungleich 0, also 0 ist ein praktischer Flag-Wert, der bedeutet, dass „Timer nicht eingestellt“ ist. (Andere Plattformen geben möglicherweise andere Werte zurück; beispielsweise gibt die Timer-Funktion von Node.js ein Objekt zurück.)
Verwenden Sie setTimeout
Um einen Timer zu planen, der nur einmal ausgelöst wird Funktion können Sie die setTimeout-Funktion verwenden. Es löst nicht kontinuierlich aus. (Gegebenenfalls wird auch ein Handle zurückgegeben. Sie können „clearTimeout“ verwenden, wenn Sie die Funktion abbrechen müssen, bevor sie einmal ausgelöst wird.)
setTimeout(drawAll, 20);
Das obige ist der detaillierte Inhalt vonWie kann ich „clearInterval' verwenden, um zu verhindern, dass „setInterval' eine unerwünschte Schleife in meiner „doKeyDown'-Funktion erstellt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!