Heim >Web-Frontend >js-Tutorial >Wie kann ich „clearInterval' verwenden, um zu verhindern, dass „setInterval' eine unerwünschte Schleife in meiner „doKeyDown'-Funktion erstellt?

Wie kann ich „clearInterval' verwenden, um zu verhindern, dass „setInterval' eine unerwünschte Schleife in meiner „doKeyDown'-Funktion erstellt?

DDD
DDDOriginal
2024-12-03 18:06:18810Durchsuche

How Can I Use `clearInterval` to Prevent `setInterval` from Creating an Unwanted Loop in My `doKeyDown` Function?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn