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

125
Vistas
Borrar setTimeouts que están en bloques condicionales

Tengo tiempos de espera que solo se inicializan cuando la página se desplaza una cierta cantidad. El problema es que si me desplazo a una página y no espero el tiempo de espera, continúa pasando a la página siguiente. Así que quiero borrarlos cuando esa página ya no esté en ese desplazamiento de desplazamiento. Descubrí que solo puede borrar los tiempos de espera almacenándolos en una variable (es decir, let x = setTimeout(func,time)) y luego borrando la variable. Pero si los declaro dentro de las declaraciones del bloque, los otros bloques no pueden acceder a él. Pero si lo hago global, se inicializa sin ninguna condición. Cuando intento encerrar el global en una función para que no se ejecute de inmediato (let x = ()=>{setTimeout(func,time)}), ya no puedo borrarlo por alguna razón.

 contain.addEventListener("scroll",()=>{ // Frame 1 if(contain.scrollTop == 0){ handleAudio2(); handleAudio3(); handleAudio4(); emptyParticlesTwo(); vid.pause(); } if(contain.scrollTop == window.innerHeight){ setTimeout(()=>{ contain.scrollBy(0,window.innerHeight)},23000) } if(contain.scrollTop == window.innerHeight*2){ setTimeout(()=>{ contain.scrollBy(0,window.innerHeight)},23000) }})
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Simplemente guarde la identificación del tiempo de espera en una variable que esté en un ámbito fuera de las declaraciones if. También recomendaría combinar sus dos sentencias if o poner un else antes de la segunda. De la forma en que los ha publicado aquí, el segundo es redundante (parece que el segundo 'si' no debería estar en la función de tiempo de espera)

 var toID; if(contain.scrollTop == window.innerHeight){ toID = setTimeout(()=>{ contain.scrollBy(0,window.innerHeight)},23000) } if(contain.scrollTop == window.innerHeight*2){ toID = setTimeout(()=>{ contain.scrollBy(0,window.innerHeight)},23000) }})
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