web-dev-qa-db-ja.com

ループ時間のあるsetInterval

setInterval(function(){}, 200)

このコードは関数を200ミリ秒ごとに実行しますが、関数を10回だけ実行する場合はどうすればよいですか。

手伝ってくれてありがとう。

26
bingjie2680

コールバックが実行されるたびに増加するカウンターを使用し、必要な実行回数に達したら、clearInterval()を使用してタイマーを強制終了します。

var counter = 0;
var i = setInterval(function(){
    // do your thing

    counter++;
    if(counter === 10) {
        clearInterval(i);
    }
}, 200);
73
karim79
(function(){
var i = 10;
    (function k(){

        // your code here            

        if( --i ) {
        setTimeout( k, 200 );
        }

    })()
})()
7
Esailija

10回実行する場合、実行する時間は200ミリ秒ごとで、200X10 = 2000

var interval = setInterval(yourfunction, 200);
setTimeout(function() {
    clearInterval(interval)
}, 2000);

しかし、9回しか実行されないため、さらに200ミリ秒を追加する必要があります

var interval = setInterval(yourfunction, 200);
setTimeout(function() {
    clearInterval(interval)
}, 2200);

または、setIntervalの前に実行できます

yourfunction();
var interval = setInterval(yourfunction, 200);
setTimeout(function() {
    clearInterval(interval)
}, 2000);
4
shadownrun

代わりにforループを使用するだけで、はるかに簡単です。

このコードを試してください。

for (counter=0; counter<0; counter++) {}
0
JavaScripter199