zoukankan      html  css  js  c++  java
  • 前端 防抖&节流,你学到未啊?

    防抖:当一定时间内 函数多次被触发的时候,只会执行最后一次

    节流:当一定时间内 执行函数时候,函数只会执行第一次,后面的不会被触发

    总结:节流防抖都是用来控制某些函数的调用频率

    防抖(debounce):

    function debounce(func, delay) {
        let timeout;
        return function() {
            clearTimeout(timeout);
            timeout = setTimeout(()=>{
                func.apply(this, arguments);
            }, delay);
        }
    }
    防抖的直观体现
    
     

    节流(throttle):

      1.时间戳版

      

    function throttle(func, delay) {
        let last = 0;
        return function () {
            let now = Date.now();
            if (now >= delay + last) {
                func.apply(this, arguments);
                last = now;
            } else {
                console.log("距离上次调用的时间差 不满足delay要求");
            }
        }
    }
    时间戳版节流

      

      2.定时器版

    // 定时器实现防抖函数
    function throttle(func, delay) {
      let timer = null
      return function(){
        if(!timer) {
          func.apply(this, arguments);
          timer = setTimeout(() => {
            // 执行完毕之后,将timer置null
            timer = null      
          }, delay);
        }else{
          console.log('上一个定时器尚未结束')
        }
      }
    }
    定时器节流

      

    
    参考作者(copy):大帅老猿
    链接:https://juejin.cn/post/6962949488646291486
    来源:掘金
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    Java8之Consumer接口
    Java8之Cloneable接口
    Java基础之Iterator接口
    Java基础之Iterable接口
    WPF中窗体在同一个位置实现不同页面切换
    WPF中单选框RadioButton
    WPF中的TextBlock处理长字符串
    WPF中Canvas使用
    WPF中窗体调用窗体
    WPF中HyperLink超链接的使用
  • 原文地址:https://www.cnblogs.com/soonK/p/15092966.html
Copyright © 2011-2022 走看看