¿Por qué stopInterval no limpia mave ? mave sigue registrando 'g' incluso después de llamar a stopInterval() .
let boy = 'bama'; let count = 1; const name = () => { let stopInterval = () => { if (count >= 1) { clearInterval(mave); } } if (boy === 'lama') { stopInterval(); var move = setInterval(() => { console.log('u'); },3000); } else if (boy === 'bama') { stopInterval(); var mave = setInterval(() => { console.log('g'); },3000); } }; name();setInterval cuando las invocaciones devolverán un timerId , debe borrar esa identificación.
No está borrando la id cada vez que se ejecuta el intervalo, puede llamar a la función stopInterval en cada ejecución de devolución de llamada que haya pasado a setInterval
let boy = "bama"; let count = 1; const name = () => { let id; //change - create id variable on top of function let stopInterval = () => { if (count >= 1) { clearInterval(id); } }; if (boy === "lama") { id = setInterval(() => { //change - Assigning ID stopInterval(); //change - Run every time and check console.log("u"); }, 3000); } else if (boy === "bama") { id = setInterval(() => { //change - Assigning ID stopInterval(); //change - Run every time and check console.log("g"); }, 3000); } }; name(); Alternate short solution
let boy = "bama"; let count = 1; const name = () => { var timerId = setInterval(() => { if (count++ >= 3) clearInterval(timerId); if (boy === "lama") console.log("u"); else console.log("g"); }, 3000); }; name();No proporciona ninguna condición para detener/borrar ese intervalo. Desde el principio, lo primero que debe hacer es detener el intervalo (que aún no ha comenzado). Luego comienzas el intervalo y no proporcionas nada para detener eso. configure el comando stopIntervall donde consola. log ("g") y al depurar verá la diferencia.
Parecería que falta algo en este programa, el único intervalo que se establece es
var mave = setInterval(()//etcLo que establece "mave" como una variable local que solo es visible en el alcance de esa declaración if, y después de que eso sucede, no hay "stopInterval", solo lo está llamando antes de iniciarlo
Primero, debe hacer que mave sea una variable global o simplemente pasarla como un parámetro para stopInterval (pero luego sería lo mismo claro, así que también podría usar eso), pero principalmente, debe detenerlo DESPUÉS tú lo empiezas
Intente simplemente hacer un botón que lo borre cuando se haga clic, o cualquier cosa