• js的节流和防抖详解


    防抖和节流是JavaScript中的常见优化技巧,它们可以帮助我们控制代码在特定的时间间隔内执行的频率,从而优化性能。下面详细讲解它们的原理和使用方法。

    防抖(Debounce):

    防抖的原理是当一个事件频繁触发时,只有在停止触发一段时间后,才会执行相应的代码。比如用户在输入框中连续输入,我们不必要每次都去响应用户的输入,而是在用户停止输入一段时间后再去响应。

    防抖的实现方法很简单,通过设置一个定时器,来延迟执行函数。如果在定时器执行之前,又触发了该事件,就取消定时器,并重新设置一个新的定时器。

    使用示例:

    1. function debounce(func, delay) {
    2. let timer;
    3. return function() {
    4. clearTimeout(timer);
    5. timer = setTimeout(() => {
    6. func.apply(this, arguments);
    7. }, delay);
    8. }
    9. }
    10. const debouncedFunc = debounce(() => {console.log('执行');}, 1000);
    11. debouncedFunc();
    12. debouncedFunc();
    13. debouncedFunc(); //只会输出一次“执行”

    节流(Throttle):

    节流的原理是当一个事件频繁触发时,只会在特定的时间间隔内执行一次相应的代码。比如在滚动页面的时候,我们不必要每次都去响应滚动事件,而是在特定的时间间隔内去响应。

    节流的实现方法也很简单,在每次执行代码之前,先判断当前时间间隔是否达到了预设的时间间隔,如果达到了,就执行相应的代码,并重新设置计时器;如果没达到,就忽略这次触发。

    使用示例:

    1. function throttle(func, delay) {
    2. let timer;
    3. let lastTime = 0;
    4. return function() {
    5. const currentTime = new Date().getTime();
    6. if (currentTime - lastTime >= delay) {
    7. lastTime = currentTime;
    8. func.apply(this, arguments);
    9. } else {
    10. clearTimeout(timer);
    11. timer = setTimeout(() => {
    12. lastTime = currentTime;
    13. func.apply(this, arguments);
    14. }, delay - (currentTime - lastTime));
    15. }
    16. }
    17. }
    18. const throttledFunc = throttle(() => {console.log('执行');}, 1000);
    19. throttledFunc();
    20. throttledFunc();
    21. throttledFunc(); //只会输出两次“执行”

    总结:

    防抖和节流都是常见的优化技巧,它们能控制代码的执行频率,优化性能,提高用户体验。需要根据具体的场景选择使用哪一种技巧。

  • 相关阅读:
    Ae 效果:CC Snowfall
    nfsiostat 命令
    第四章 决策树
    呼叫中心-拨号方案和路由配置okcc智能系统
    EtherCAT IGH 的编译选项介绍
    react scss.modules中使用iconfont
    代码随想录训练营第37天|LeetCode 738.单调递增的数字、714. 买卖股票的最佳时机含手续费、 968.监控二叉树
    Win10/Win11下部署Django项目到Apache2.4的方法
    KY33 密码翻译
    win11安装双系统Ubuntu的坎坷记录
  • 原文地址:https://blog.csdn.net/song19990524/article/details/134019283