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

375
Visualizações
jQuery: retrasa el uso de una función una vez que se activa durante un tiempo determinado

Quiero que mi función se active al desplazarse, pero luego espere 250 ms hasta que pueda activarse nuevamente.

 function myFunction() { console.log('hello'); } $(window).on('scroll', function() { myFunction(); });

He intentado un tiempo de espera:

 $(window).on('scroll', function() { setTimeout(function() { myFunction(); }, 250); });

Sin embargo, este método demora 250 ms antes de activar la función.

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

0

Según esta respuesta , puede agregar un indicador para que no se disparen eventos adicionales y luego borrar ese indicador con un tiempo de espera.

Tenga en cuenta que esto perderá/caerá eventos dentro del tiempo de espera, por lo que no debe usarse para algo como la entrada del teclado del usuario; donde el rebote sería más adecuado.

 var active = false; $(window).on('scroll', function() { if (active) return; active = true; myFunction(); setTimeout(function() { active = false; }, 250); }); function myFunction() { console.log("scroll"); }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div style='height:30000px;'> something to scroll </div>

Esta es una implementación básica del acelerador. Las mejoras serían hacerlo modular/espacio de nombres y/o almacenar el indicador "activo" en el elemento mismo; para que el mismo evento se pueda reutilizar para múltiples elementos y no cree muchas variables globales.

about 4 years ago · Juan Pablo Isaza Relatório

0

Simplemente llame a su función una vez fuera de setTimeout .

 $(window).on('scroll', function() { myFunction(); // call once setTimeout(function() { myFunction(); }, 250); // repeat call after 250ms });

Use setInterval en lugar de setTimeout si desea llamadas repetidas cada 250 ms.

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