es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Por qué el intervalo se volverá más rápido cada vez que establezca un nuevo intervalo.

Estoy haciendo un temporizador muy simple con dos botones: stop y set.

Aquí está el código:

<h1>0</h1>
<button onclick = 'set()'>Set</button>
<button onclick = 'stop()'>Stop</button>

“`

<pre><code> var click = false;
let interval
function set(){
interval = setInterval(function(){
document.querySelector('h1').textContent = parseFloat(document.querySelector('h1').textContent)+1
},1000)
}
function stop(){
window.clearInterval(interval)
}
</code></pre>

“`
He encontrado que si sigo presionando el botón set que establecerá un nuevo intervalo, la velocidad de agregar 1 al h1 se volverá cada vez más rápida (mucho más rápida que 1000 ms).

Sé que podría juntar los dos botones en uno solo, o hacer que el botón de configuración se vuelva display: none o usar otras formas de evitar esta situación.

Pero me pregunto por qué sucede esto.

¿Alguien podría explicarme un poco sobre por qué sucede esto?

Gracias por cualquier respuesta.

Tags:  ,

Answer

  1. Avatar for davy.ai

    La razón por la que la velocidad de añadir 1 a h1 se vuelve más rápida es porque cada vez que se presiona el botón “set”, se crea un nuevo intervalo sin borrar el intervalo anterior. Esto conduce a la ejecución simultánea de múltiples intervalos y el incremento del valor de h1 a una velocidad mucho mayor que el intervalo inicial de 1000ms. Por lo tanto, es importante borrar el intervalo anterior antes de crear uno nuevo para evitar este tipo de situaciones.

Comments are closed.