前端中的防抖和节流
一、背景
在日常使用中,用户在进行搜索时,没输入一个字就会触发接口请求,这样就会造成网络请求繁忙;用户在下拉滚动调的时候,由于速度过快也会造成频繁触发接口调用。
二、防抖
防抖,顾名思义,防止抖动。用于将用户的操作行为触发转换为程序行为触发,防止用户操作的结果抖动。一段时间内,事件在我们规定的间隔 n 秒内多次执行,回调只会执行一次。
1 /** 2 * 防抖 3 * @param {function} fn 4 * @param {number} delay 5 */ 6 function debounce(fn, delay = 500){ 7 let timer = null 8 return function(){ 9 if(timer) { 10 clearTimeout(timer) 11 } 12 timer = setTimeout(()=>{ 13 fn.apply(this, arguments) 14 clearTimeout(timer) 15 },delay) 16 } 17 }
三、节流
节流,顾名思义,控制流量。用于用户在与页面交互时控制事件发生的频率,一般场景是单位的时间或其它间隔内定时执行操作。一段时间内,事件在每次到达我们规定的间隔 n 秒时触发一次。
1 /** 2 * 节流 3 * @param {function} fn 4 * @param {number} delay 5 */ 6 function throttle(fn, delay = 100){ 7 let timer = null 8 return function(){ 9 if(timer) return 10 timer = setTimeout(()=>{ 11 fn.apply(this, arguments) 12 timer = null 13 }, delay) 14 } 15 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码