web-dev-qa-db-fra.com

setInterval avec temps de boucle

setInterval(function(){}, 200)

ce code exécute la fonction toutes les 200 millisecondes, comment faire si je souhaite que la fonction soit exécutée 10 fois seulement.

merci pour l'aide.

26
bingjie2680

Utilisez un compteur qui s'incrémente chaque fois que le rappel est exécuté, et lorsqu'il atteint le nombre d'exécutions souhaité, utilisez clearInterval() pour tuer le minuteur:

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

si vous voulez qu'il s'exécute 10 fois et que l'heure à laquelle il doit s'exécuter soit toutes les 200 millisecondes, alors 200X10 = 2000

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

mais il ne fonctionne que 9 fois, nous devons donc ajouter plus de 200 millisecondes

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

ou vous pouvez l'exécuter avant setInterval

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

Utilisez simplement une boucle for à la place, beaucoup plus facile:

Essayez simplement ce code.

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