Entendendo o Javascript Debouning
no JavaScript, a função "Debounce" desempenha um papel crucial na otimização do manuseio de eventos e na prevenção de chamadas de função excessiva. Funciona adiando a execução de uma função até que uma quantidade específica de tempo tenha decorrido desde sua última invocação. timeout var; Return function () { var context = this, args = argumentos; var mais tarde = function () { timeout = nulo; if (! imediato) func.apply (contexto, args); }; var callnow = imediato &&! Timeout; ClearTimeout (tempo limite); timeout = setTimeout (mais tarde, espere); if (callnow) func.apply (context, args); }; };
para entender como funciona, vamos analisar cada parte:
function debounce(func, wait, immediate) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if (!immediate) func.apply(context, args); }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) func.apply(context, args); }; };
'imediato' sinalizador:
este sinalizador opcional determina se a função deve ser executada imediatamente na primeira chamada antes do período de atraso. Se imediato estiver definido como true, a função será executada na chamada inicial e aplicará o atraso para as chamadas subsequentes. Ele limpa o tempo limite e, se 'imediato' for falso, executa a função debounced. Se avaliar como verdadeiro, significa que a função deve ser executada imediatamente. é falso ou 'callnow' é falso, um tempo limite está definido para executar a função após o período de atraso especificado. Se outra chamada ocorrer antes do tempo limite expirar, ele redefine o tempo limite. Chamadas de função desnecessárias ou repetitivas.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