javascript - node - Recursive setInterval() se ejecuta continuamente
setinterval clearinterval javascript (4)
Cambiar esta línea:
setInterval(five(), 5000);
Me gusta esto:
setInterval(five, 5000);
Pero parece que lo que realmente necesitas es:
setTimeout(five, 5000);
Entonces su código se verá así:
function five() {
console.log("five");
setTimeout(five, 5000);
}
five();
Estoy intentando ejecutar una función cada 5 segundos usando JavaScript usando una función setInterval recursiva.
El siguiente código simplemente inicia "inicia" lo más rápido posible y luego bloquea el navegador. ¿Por qué esto no se ejecuta cada 5 segundos?
function five() {
console.log("five");
setInterval(five(), 5000);
}
five();
La razón por la que falla es porque llamas a la función cinco . En lugar de eso, debes pasarlo como parámetro.
setInterval(five, 5000);
Llamas a five
inmediato, en lugar de simplemente pasarlo :
function five () {
console.log("five");
}
setInterval(five, 5000);
/* ^ */
No use setInterval de esta manera. Use setTimeout. Al invocar setInterval, crea un temporizador ÚNICO cada vez que se llama a la función. SetTimeout creará un temporizador que finaliza y luego crea un nuevo temporizador.
También debe cambiar la forma en que hace referencia a five
. five()
ejecuta la función de inmediato. Solo five
pasa una referencia de función, hazlo como ves a continuación.
function five() {
console.log("five");
setTimeout(five, 5000);
}
five();
Por supuesto, siempre puede pasar la llamada a la función como una cadena para ser evaluada:
setTimeout("five()", 5000); // note the quotes
Pero esto generalmente se considera una mala práctica.