reiniciar mdn interval funcion detener como javascript

mdn - reiniciar setinterval javascript



Javascript: ¿le dice a setInterval que dispare solo x cantidad de veces? (5)

¿Es posible limitar la cantidad de veces que se activará setInterval en javascript?


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>


No, tiene que establecer un tiempo de espera que llame a un clearInterval. Esto debería funcionar:

function setTimedInterval(callback, delay, timeout){ var id=window.setInterval(callback, delay); window.setTimeout(function(){ window.clearInterval(id); }, timeout); }


Personalmente prefiero usar setTimeout() espaciado 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 se requiere clearInterval() con clearInterval()

Puedes encerrarlo para evitar fugas de 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)


Puedes usar setTimeout y un bucle for.

var numberOfTimes = 20; delay = 1000; for (let i = 0; i < numberOfTimes; i++) { setTimeout( doSomething, delay * i); }


Puede llamar a clearInterval() después de x llamadas:

var x = 0; var intervalID = setInterval(function () { // Your logic here if (++x === 5) { window.clearInterval(intervalID); } }, 1000);

Para evitar 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); }

Luego puede llamar a la nueva función setInvervalX() siguiente manera:

// This will be repeated every for 5 times with 1 second intervals: setIntervalX(function () { // Your logic here }, 1000, 5);