Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

168
Visualizações
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.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

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.

about 4 years ago · Juan Pablo Isaza Relatório

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);
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda