• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

117
Vistas
setTimeout siendo llamado varias veces

No puedo entender por qué se llama a setTimeout varias veces en mi código. Aquí hay un fragmento del código con lo que pensé que era irrelevante eliminado:

 let dead; setup() { dead = false; } draw() { if(fell == true) { dead = true; } mechanics(); } function mechanics() { let triggerVar; if(dead == true) { triggerVar = 1; dead = false; } if(triggerVar == 1) { setTimeout(resetG, 1500); triggerVar = 0; } } function resetG() { lives -= 1; position = 0; }

No puedo decir qué estoy haciendo mal porque cada vez que el personaje muere y se llama a setTimeout, en realidad no solo se llama después del retraso sino también por exactamente la misma duración después de que se activa. Entonces, en este caso, se activa primero después de 1500 milisegundos y luego cada fotograma durante otros 1500 milisegundos.

almost 3 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Logré encontrar el problema, que no estaba en el código que publiqué. El problema era que el código del constructor que hace que el objeto que cambia muerto se convierta en verdadero si se cumplen ciertas condiciones se llamaba en cada cuadro desde el momento en que provocó la muerte hasta que se activó la primera instancia de setTimeout, lo que significa que se llamó a setTimeout en cada cuadro durante 1500 milisegundos.

almost 3 years ago · Juan Pablo Isaza Denunciar

0

Lo más probable es que su función mechanics() se llame varias veces, puede dar una variable al settimeout como:

 let timeoutID= setTimeout(resetG, 1500);

Y en el lugar adecuado para limpiarlo, por ejemplo, después del ciclo de vida

 clearTimeout(timeoutID);
almost 3 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda