stop ejemplo javascript setinterval clearinterval

ejemplo - ¿La función Javascript setInterval para borrarse?



settimeout java (5)

Desde su código, lo que parece querer hacer es ejecutar una función y ejecutarla una y otra vez hasta que se realice un trabajo ...

Esa es realmente una tarea para el setTimeout() , el enfoque es similar:

var myFunction = function(){ if( stopCondition ) doSomeStuff(); //(do some stuff and don''t run it again) else setTimeout( myFunction, 50 ); } myFunction(); //immediate first run

Simple como eso :)

Por supuesto, si REALMENTE quiere usar setInterval por alguna razón, la respuesta de @jbabey parece ser la mejor :)

myInterval = setInterval(function(){ MyFunction(); },50); function MyFunction() { //Can I call clearInterval(myInterval); in here? }

El intervalo no se detiene (no se borra), si lo que he codificado arriba está bien, entonces me ayudará a buscar en otro lugar lo que está causando el problema. Gracias.

EDITAR: Supongamos que completa algunos intervalos antes de llamar a clearInterval, lo que elimina la necesidad de setTimeout.


Mientras tenga alcance la variable de interval guardada, puede cancelarla desde cualquier lugar.

En un ámbito "infantil":

var myInterval = setInterval(function(){ clearInterval(myInterval); },50);

En un ámbito de "hermano":

var myInterval = setInterval(function(){ foo(); },50); var foo = function () { clearInterval(myInterval); };

Incluso podría pasar el intervalo si saliera de alcance:

var someScope = function () { var myInterval = setInterval(function(){ foo(myInterval); },50); }; var foo = function (myInterval) { clearInterval(myInterval); };


Puedes hacerlo usando un truco con window.setTimeout

var Interval = function () { if (condition) { //do Stuff } else { window.setTimeout(Interval, 20); }; }; window.setTimeout(Interval, 20);


var interval = setInterval(function() { if (condition) clearInterval(interval); // here interval is undefined, but when we call this function it will be defined in this context }, 50);

O

var callback = function() { if (condition) clearInterval(interval); }; // here interval is undefined, but when we call this function it will be defined in this context var interval = setInterval(callback, 50);


clearInterval(myInterval);

hará el truco para cancelar el intervalo cuando lo necesite. Si desea cancelar inmediatamente después de la primera llamada, debe tomar setTimeout en setTimeout lugar. Y seguro que puedes llamarlo en la propia función de Intervalo.

var myInterval = setInterval(function() { if (/* condition here */){ clearInterval(myInterval); } }, 50);

ver un EJEMPLO aquí .