Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

348
Vistas
¿Por qué clearInterval no se detiene inmediatamente en heroku?

Alojé mi aplicación en Heroku y quiero detener la función setInterval en una determinada condición. Funciona bien en mi computadora local pero no en Heroku. En Heroku, mi función "updateLine()" todavía se llama tres veces después de que se cumple la condición newEndX >= 800 y se llama a clearInterval(intervalID) ;

¿Por qué se sigue llamando a "updateLine()" y por qué tres veces? ¿Heroku funciona de manera diferente a nuestra computadora local?

 intervalID = setInterval(function () { if (newEndX < 800) { updateLine(); } if (newEndX >= 800) { clearInterval(intervalID); alert("You reached the end of the canvas. Please click 'reset' button to startover.") console.log("reached the end of the canvas.") console.log("The final startX is", newStartX); console.log("The final endX is", newEndX); } }, 200);

Actualización: el problema probablemente se deba a algunos problemas desconocidos en Heroku o en mi navegador. Este código funciona bien en la computadora de mis compañeros de clase y en su página de Heroku.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

No tengo idea de qué podría causar la diferencia entre la máquina local y Heroku, pero tal vez la función setTimeout se ajuste mejor a este caso de uso y pueda resolver el problema.

setTimeout llama a una función una vez después de un retraso. Pero la función puede tener una verificación de la condición y configurar setTimeout para llamarse a sí mismo nuevamente si la condición pasa o simplemente salir si falla.

La llamada setTimeout se puede usar en lugar de la llamada setInterval en su ejemplo de esta manera:

 function periodicFunction() { // do something // should be called again? -> setTimeout if (newEndX < 800) { updateLine(); setTimeout(periodicFunction, 200); // otherwise just finish the work without calling setTimeout } else { alert("You reached the end of the canvas. Please click 'reset' button to startover.") console.log("reached the end of the canvas.") console.log("The final startX is", newStartX); console.log("The final endX is", newEndX); } } // initial call setTimeout(periodicFunction, 200);
about 4 years ago · Juan Pablo Isaza Denunciar

0

setInterval es una función de JavaScript que forma una cola para las solicitudes. No se detiene incluso si ocurre un error hasta que obtiene clearInterval. Esto se debe al temporizador interno del navegador y al retraso en las solicitudes que setInterval tiene en cola.

Si la demora aumenta, setInterval no se detendrá y llamará a la función una y otra vez.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda