JS篇 - 节流和防抖

本文探讨JavaScript中的两种重要性能优化技术——防抖和节流。防抖技术在用户停止触发函数一段时间后执行,常用于search联想搜索和window.resize事件。节流则确保在设定时间内只执行一次函数,适用于鼠标点击和滚动事件处理。文章提供了支持立即执行、取消功能和自定义选项的防抖与节流实现。
摘要由CSDN通过智能技术生成

防抖

定义:动作停止后的时间超过设定的时间时执行一次函数。

这里的动作停止标识你停止了出发这个函数,从这个时间点开始计算,但间隔时间等于你设定的时间,才会执行里面的回调函数。若你一直在触发这个函数并且两次触发间隔小于设定时间,则函数一直不会执行。

  • 应用场景:
    1. search联想搜索,用户在不断输入值是,用防抖来节约请求资源;
    2. window触发resize的时候,不断地调整浏览器窗口大小会不断的触发这个事件,用防抖来让其只触发一次。
function debance(fn,delay){
   
	let timer = null;
	return ()=>{
   
		if(timer){
   
			clearTimeout(timer);
		}
		timer = setTimeout(()=>{
   
			fn();
		},delay);
	}
}
window.addEventListener(
	'scroll',
	debance(()=>{
   console.log(1111)},1000)
)

最终版:除了支持 this 和 event 外,还支持以下功能:
支持立即执行;
函数可能有返回值;
支持取消功能;

function debounce(func, wait, immediate) {
   
    var timeout, result;
    
    var debounced = function () {
   
        var context = this;
        var args = arguments;
        
        if (timeout) clearTimeout(timeout);
        if
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值