¿Es posible limitar la cantidad de veces que setInterval se activará en javascript?Javascript - diciendo a setInterval que solo se dispare x cantidad de veces?
Respuesta
Puede llamar clearInterval()
después x llamadas:
var x = 0;
var intervalID = setInterval(function() {
// Your logic here
if (++x === 5) {
window.clearInterval(intervalID);
}
}, 1000);
Para evitar las variables globales, una mejora de lo anterior sería:
function setIntervalX(callback, delay, repetitions) {
var x = 0;
var intervalID = window.setInterval(function() {
callback();
if (++x === repetitions) {
window.clearInterval(intervalID);
}
}, delay);
}
A continuación, puede llamar a la nueva función setInvervalX()
como sigue:
// This will be repeated every for 5 times with 1 second intervals:
setIntervalX(function() {
// Your logic here
}, 1000, 5);
No, tiene que establecer un tiempo de espera que llame a clearInterval. Este deberían obras:
function setTimedInterval(callback, delay, timeout){
var id=window.setInterval(callback, delay);
window.setTimeout(function(){
window.clearInterval(id);
}, timeout);
}
Guau, mi respuesta 13 segundos después fue virtualmente * idéntica *. Raro. –
@ T.J. A veces encuentro lo opuesto más extraño: ¡cuando publicamos muchas soluciones diferentes para un problema trivial! –
@ T.J. Crowder: Extraño con las variables locales y las funciones anónimas;) – stagas
Esto borrará el intervalo después de 10 llamadas
<html>
<body>
<input type="text" id="clock" />
<script language=javascript>
var numOfCalls = 0;
var int=self.setInterval("clock()",1000);
function clock()
{
var d=new Date();
var t=d.toLocaleTimeString();
document.getElementById("clock").value=t;
numOfCalls++;
if(numOfCalls == 10)
window.clearInterval(int);
}
</script>
</form>
</body>
</html>
yo personalmente prefiero usar setTimeout()
espaciados a cabo para lograr el mismo efecto
// Set a function to run every "interval" seconds a total of "x" times
var x = 10;
var interval = 1000;
for (var i = 0; i < x; i++) {
setTimeout(function() {
// Do Something
}, i * interval)
}
No hay limpia se requiere con clearInterval()
puede encerrarlo para evitar fugas de las variables y se ve bastante limpio :)
// Definition
function setIntervalLimited(callback, interval, x) {
for (var i = 0; i < x; i++) {
setTimeout(callback, i * interval);
}
}
// Usage
setIntervalLimited(function() {
console.log('hit'); // => hit...hit...etc (every second, stops after 10)
}, 1000, 10)
- 1. JavaScript setInterval Límites?
- 2. Evite que Javascript se ejecute dos veces
- 3. javascript setInterval
- 4. Javascript - Restablecer setInterval a 0
- 5. Detener que OnLongClickListener se dispare mientras arrastra
- 6. ¿Cómo se repiten X veces en Django?
- 7. IE8 no se visualizan imágenes (rojo x) ... a veces
- 8. javascript setInterval: ¿se superponen las llamadas?
- 9. Javascript setInterval despejando?
- 10. MySQL: cómo hacer que las filas se repitan x veces
- 11. file_put_contents diciendo que se deniega el permiso?
- 12. Diciendo a StructureMap que use otro constructor
- 13. Javascript setInterval no funciona
- 14. Determine qué evento de desplazamiento provocó que se dispare
- 15. Cómo contar la cantidad de veces que se llamó a una función, FP way
- 16. javascript - cómo dividir una cadena cada X cantidad de caracteres?
- 17. Javascript setInterval y `this` solución
- 18. setInterval - ¿Cómo disparar solo una vez?
- 19. Cómo hacer que mouseup se dispare una vez que mousemove complete
- 20. JavaScript setTimeout setInterval dentro de una función
- 21. JavaScript: ¿Cómo obtener setInterval() para comenzar ahora?
- 22. Clases finales en Python 3.x- algo que Guido no me está diciendo?
- 23. Postgresql seleccionar hasta que se llegue a cierta cantidad total
- 24. Sustitución última x cantidad de números
- 25. setInterval() el comportamiento con 0 milisegundos en JavaScript
- 26. setInterval con tiempo de ciclo
- 27. ¿Cómo cambiar un singleton Javascript a algo que se puede usar varias veces?
- 28. SharedPreferences a veces se eliminan
- 29. ¿Por qué las animaciones a veces se realizan usando pasos basados en la cantidad de tiempo que pasa?
- 30. Add 'x' cantidad de horas al día
Hey @DanielVassallo, digo que quiero sólo para borrar el intervalo de la tercera llamada de retorno porque tal vez finalmente pasó algo de lógica; ¿Volverá el salto falso de setIntervalX() o se necesitará un parámetro adicional en alguna parte? Parece que si devuelvo un bool de la devolución de llamada(), puedo saltear el intervalo ... –
Muchas gracias por el útil fragmento de @DanielVassallo –
que está bien. es lo que quiero –