while una tiempo segundos retardo repetitivos repetir funcion for esperar ejemplos ejecutar despues ciclos ciclo javascript jquery setinterval

tiempo - repetir una funcion javascript



¿Cómo comenzar a establecer el ciclo de Intervalo inmediatamente? (4)

A veces uso este patrón ...

(function me() { // Do something every 9 seconds setTimeout(me, 9000); })();

No es lo mismo, ya que esperará hasta que se ejecute algo antes de esperar ~ 9 segundos para volver a llamar. Sin embargo, esto a menudo es útil para que los eventos en la cola de eventos no se acumulen innecesariamente (sin embargo, es poco probable que algún código demore 9 segundos en ejecutarse :)

Tenga en cuenta que en IEs anteriores, el me se filtrará al ámbito externo.

Esta pregunta ya tiene una respuesta aquí:

En un setInterval simple setInterval

setInterval(function() { // Do something every 9 seconds }, 9000);

La primera acción ocurrirá después de 9 segundos ( t=9s ). ¿Cómo forzar al bucle a realizar la primera acción de forma inmediata ( t=0 )?

Creo que es debido al mecanismo de setInterval tener Delay - Action - Delay - Action ... loop; en lugar de Action - Delay - Action - Delay ... loop.

EDITAR: Mi función es de hecho un ciclo como

setInterval(function(){ $(''.test'').each(function(idx){ var duration = 1000; $(this).delay(duration*idx); Some stuff here }); }, 4000);


Mantenlo simple. Puede usar una función nombrada en lugar de una función anónima; llámalo y establece un intervalo para ello.

function doSomething() { console.log("tick"); } doSomething(); setInterval(doSomething, 9000);

Cree un alcance si es necesario:

(function() { function doSomething() { console.log("tick"); } doSomething(); setInterval(doSomething, 9000); })();

Finalmente, lo siguiente funciona sin crear o afectar x :

setInterval(function x() { console.log("tick"); return x; }(), 9000);


Use una función nombrada y llámela y asígnela al intervalo.

var myFnc = function() { // Do something every 9 seconds }; setInterval(myFnc, 9000); myFnc();

La otra opción es usar setTimeout en su lugar.

var myFnc = function() { // Do something every 9 seconds setTimeout(myFnc, 9000); }; myFnc();


setInterval () es una función realmente fea. Utilizo esta versión desinfectada, que llama a la función inmediatamente, y toma un tiempo en segundos, ANTES del parámetro de la función, por lo que llamarlo con una definición de función en línea realmente parece sensato.

function startInterval(seconds, callback) { callback(); return setInterval(callback, seconds * 1000); }