GOOGLE ADS

lunes, 25 de abril de 2022

Ejecute la función setInterval sin demora la primera vez

Hay una manera de configurar el setIntervalmétodo de javascript para ejecutar el método inmediatamente y luego se ejecuta con el temporizador.


Solución del problema

Es más simple simplemente llamar a la función usted mismo directamente la primera vez:

foo();
setInterval(foo, delay);

Sin embargo, hay buenas razones para evitarlo setInterval: en particular, en algunas circunstancias, una gran cantidad de setIntervaleventos pueden llegar inmediatamente después de otros sin ningún retraso. Otra razón es que si desea detener el ciclo, debe llamar explícitamente, clearIntervallo que significa que debe recordar el identificador devuelto por la setIntervalllamada original.

Entonces, un método alternativo es hacer que se foodispare para llamadas posteriores usando setTimeouten su lugar:

function foo() {
// do stuff
//...
// and schedule a repeat
setTimeout(foo, delay);
}
// start the cycle
foo();

Esto garantiza que haya al menos un intervalo de delayentre llamadas. También hace que sea más fácil cancelar el ciclo si es necesario; simplemente no llama setTimeoutcuando se alcanza la condición de finalización del ciclo.

Mejor aún, puede envolver todo eso en una expresión de función invocada inmediatamente que crea la función, que luego se vuelve a llamar a sí misma como se indicó anteriormente y automáticamente inicia el ciclo:

(function foo() {
...
setTimeout(foo, delay);
})();

que define la función y comienza el ciclo de una sola vez.

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...