最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 什么是防抖和节流

    正文概述 掘金(前端摸鱼师)   2020-11-26   598

    什么的防抖和节流?

    防抖和节流是两种应对web页面中频繁触发事件的优化方案。

    防抖 debounce

    顾名思义,防抖就是防止抖动,避免事件的重复触发。
    应用场景:

    1. 点击按钮事件,用户在一定时间段内的点击事件,为了防止和服务端的多次交互,我们可以采用防抖。
    2. 输入框的自动保存事件
    3. 浏览器的resize事件

    总之,防抖可以概括为触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间。 根据以上概念,我们可以尝试一下实现一个防抖函数:

    function debounce(fun,wait){
        let timer;
        return (...args)=>{
        	if (timer){
            	clearTimeout(timer);
            }
            timer = setTimeout(()=>{
            	fun(...args);
            },wait)
        }
    }
    window.onresize = debounce(()=>{
    	console.log(1);
    },1000);
    //页面在频繁resize的时候,控制台也只会打印一次1
    

    节流 throttle

    还是顾名思义,节流就是减少流量,将频繁触发的事件减少,并每隔一段时间执行。即,控制事件触发的频率。
    应用场景:

    1. scroll事件,滚动的过程中每隔一段时间触发事件。(可见 如何实现图片的懒加载中的应用)

    节流可以概括为高频事件触发,但在n秒内只会执行一次,节流会稀释函数的执行频率。 根据以上概念,我们可以尝试一下实现一个节流函数:

    //利用时间间隔实现
    function throttle1(fun,wait){
    	let time1 = 0;
    	return (...args)=>{
       		const time2 = Date.now()
            const timeInterval = time2 - time1;
     		if ( timeInterval < wait){
     			return 
     		}else {
    			time1 = time2;
                fun(...args);
    		}
        }
    }
    window.onresize = throttle1(()=>{
    	console.log(1);
    },1000);
    //页面在频繁resize的时候,控制台会每隔1秒打印一次
    
    //利用定时器实现
    function throttle2(fun,wait){
    	let timer;
    	return (...args)=>{
    		if (timer){
    			return
    		}else {
    			timer = setTimeout(()=>{
    				timer = null;
    				fun(...args);
    			},wait);
    		}
    	}
    }
    window.onresize = throttle2(()=>{
    	console.log(1);
    },1000);
    //页面在频繁resize的时候,控制台会每隔1秒打印一次
    

    总结:

    防抖:触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间
    节流:高频事件触发,但在n秒内只会执行一次,节流会稀释函数的执行频率


    起源地下载网 » 什么是防抖和节流

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元