2011-12-07 13 views

Respuesta

53

utilizar un contador que se incrementa cada vez que la devolución de llamada es ejecutado, y cuando llega a su número deseado de ejecuciones, utilice clearInterval() para matar el temporizador:

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

    counter++; 
    if(counter === 10) { 
     clearInterval(i); 
    } 
}, 200); 
+0

3 signos de igualdad? –

+1

@JeffreySweeney http://stackoverflow.com/questions/359494/javascript-vs-does-it-matter-which-equal-operator-i-use – vcsjones

+0

genial ... parece una buena solución. – bingjie2680

6
(function(){ 
var i = 10; 
    (function k(){ 

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

    })() 
})() 
+1

+1 para usar 'setTimeout' en lugar de' setInterval'. Probablemente iría con 'var i = 10' y' if (i -) ', pero así soy yo :-) –

+0

@AndyE, lol gracias. Es aún más hermoso ahora – Esailija

2

si desea que se ejecute de 10 veces y el tiempo que se debe ejecutar es cada 200 milisegundos después 200X10 = 2000

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

pero sólo se ejecuta 9 veces por lo que hay que sumar más de 200 milisegundos

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

o se puede ejecutar antes de que el setInterval

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

sé que no es seguro pero, la cosa es la idea detrás del código no cómo se hace lo siento mal Inglés – shadownrun

+0

Sugiero no tomar el comentario alarmante anterior no demasiado en serio, pero en general se recomienda pasar una función . No vale la pena el hecho de que pasar por cadena es * comportamiento diferente * (es decir, busca la función en el alcance global) y todo lo que se admite en los navegadores más antiguos. –

+0

Me gusta esta solución. Lo único que debe proporcionar para borrar es la variable para los tiempos de ejecución, y pasar el multiplicar como un segundo parámetro al 'setTimeout()'. –