Este não é apenas mais um artigo tentando explicar como o debounce ou a limitação funciona no nível do código, em vez disso, é uma ilustração para lembrar e visualizar o conceito para que você possa praticamente aplicá -los em seu trabalho.
pessoalmente, muitas vezes me pego esquecendo os conceitos de debouscing e aceleração, então quando alguém me pede para explicá -los - ou se uma pergunta surgir em uma entrevista - eu apenas piscar? Para evitar isso, fiz uma página simples para ajudar a atualizar minha memória. Se você não quer se sentir como um impostor, acompanhe?
No codepen abaixo, definei o atraso para 2 segundos para debounce e acelerador. Tente clicar em itens alimentares aleatórios e dar uma pausa.
link para página
imagine que você está em um restaurante e deseja pedir comida, para escolher o menu da mesa e começar a ler todos os itens. (Na página da web que compartilhei, clicar em diferentes itens alimentares será equivalente à leitura do item de menu)
A analogia aqui
e imagine que existem três tipos diferentes de garçons no restaurante que poderiam atendê -lo:
? ♂️ garçom normal
? Garçom debounced
? ? Garçom acelerado
Nota: A principal diferença é:
- Debouncing: aguarda a atividade (clique no botão) para parar por um tempo especificado para acionar
- aceleração: gatilhos em intervalos regulares, independentemente de quando uma atividade é interrompida
- também 2 seg é apenas algo que eu usei como exemplo, pode ser qualquer tempo
Antes de entender o Debounce ou o acelerador, precisamos saber por que eles são usados em primeiro lugar. Para saber que vamos entender o comportamento dos manipuladores de eventos JS
No JS, os manipuladores de eventos são apenas funções que executam quando ocorrem eventos específicos (como cliques, digitação ou rolagem). Por padrão, esses manipuladores disparam toda vez que o evento acontece - todo pressionamento de tecla, cada clique ou movimento de rolagem.
// Basic event handler button.addEventListener('click', function() { console.log('Button clicked!'); }); // Basic keystroke handler input.addEventListener('keyup', function() { console.log('Key pressed!'); });
diga, por exemplo, você tem um botão que faria uma chamada de API
function makeApiCall() { console.log("API call made"); } button.addEventListener('click', () => { makeApiCall(); });
A função acima executará o makeapicall () em cada botão Clique em (ou seja) se você conseguir pressioná -lo 10 vezes dentro de 1 seg, adivinhe o que você fez 10 chamadas de API em 1 seg. este é o comportamento padrão.
, mas disparar uma chamada de API toda vez para um evento pode ser ineficiente e, na maioria das vezes, não é isso que você está procurando. É aqui que a limitação e o debouncing entram na foto.
se você deseja tirar uma definição deste artigo, pode ser este. estrangulamento e debouncing são duas maneiras mais comuns de controlar a taxa de resposta de um ouvinte de evento.
Eu não vou explicar o código para debounding, pois isso pode ser importado do lodash, mas veremos onde você pode realmente usá -lo.
use debouning quando quiser fazer a API Chamada somente se o usuário parar de digitar por um certo período de tempo ou parou de clicar por um certo período de tempo.
Em nosso exemplo, se o usuário continuar clicando no botão, mesmo por 5 minutos, a chamada da API será feita apenas uma vez.
Então, duas coisas estão acontecendo aqui:
Exemplo Se o usuário estiver digitando por 1 minuto direto sem fazer uma pausa, então a cada 2 seg que você chamaria a API.
Conclusão
Se você gosta do artigo deixar um polegar para cima, isso realmente me motivaria a escrever mais. Obrigado ?.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3