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

220
Vistas
La función se ejecuta dos veces cuando no debería ser

Estoy haciendo un clicker de cookies como un juego para practicar Javascript. El objetivo de la función addFarm(farmAdd) es agregar una cierta cantidad de granjas cuando se llama. Al usar console.log, descubrí que setinterval se ejecuta dos veces cada 1000 ms en lugar de una vez cada 1000 ms, lo que hace que el conteo de bananas se agregue +30 cada segundo en lugar de +15. Me imagino que se debe a que la función addFarm se llama dos veces en el código, pero la primera vez está en una declaración if que no debería ejecutarse ya que la variable addFarm1 está establecida en verdadero y no en falso.

Soy nuevo en javascript (alrededor de una semana) y no puedo entender por qué hace esto. Cualquier ayuda sería apreciada

 function addFarm(farmAdd) { // this is the function farmCount = farmCount + farmAdd; farmAdd = 0; farmIncrement = farmCount * 5; farmCountText.textContent = farmCount + ' (+' + farmIncrement + ')'; setInterval(function() { // this part is executed twice every 1000ms bananaCount = bananaCount + farmIncrement; bananaCountText.textContent = bananaCount; console.log(farmIncrement); }, 1000); } function bananaClick() { bananaCount += 1; if (bananaCount > 10000) { bananaClicked.textContent = 'Golden Banana Bunch (+15)'; banana.src = 'images/banana6.png'; countByTwo(3); if (!addFarm1) { addFarm(1); addFarm1 = true; } } if (bananaCount > 15000) { bananaClicked.textContent = 'Mario Banana (+23)'; banana.src = 'images/banana7.png'; countByTwo(4); if (!addFarm2) { addFarm(2); addFarm2 = true; } } bananaCountText.textContent = bananaCount; }

hay más código, pero no lo he agregado, así que puedo acortar la publicación, pero si necesita más contexto, pregunte por favor :)

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

0

Me imagino que cuando vinculó el evento de clic para bananaClick, puede estar haciéndolo dos veces.

Por ejemplo:

 document.addEventListener('click', () => console.log('c'), ) document.addEventListener('click', () => console.log('c'), )

Imprimirá c dos veces cada vez que se haga clic.

Si solo habrá un temporizador funcionando a la vez, puede borrarlo cada vez que se llame.

 let timer; let a = () => { clearInterval(timer) timer = setInterval( ()=> { console.log('bananas') }, 2000) } a() a() a() // only one timer will be active
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