js 防抖与节流原理
防抖和节流是前端应用开发中常见的两个功能,其原理都是利用闭包,缓存延迟时间。常用于窗口的resize、scroll,输入框内容校验等操作。
(1)防抖,思路:在规定时间内未触发第二次,则执行,代码如下
function debounce(fn, delay) {
let time = null ; //定时器
delay = delay || 500
//利用闭包,缓存delay
return function() {
let arg = arguments
if(time) {
clearTimerOut(time)
}
time = setTimerOut(()=>{
fn.apply(this,arg)
},delay)
}
}
(2)节流,当持续触发事件时,保证一定时间段内只调用一次
function throttle(fn,delay) {
let pre = Date.now()
deley = delay || 500;
return function(){
let nowT = Date.now()
let arg = arguments
if(nowT - pre > = delay ) {
fn.apply(this ,arg)
pre = Date.now()
}
}
}
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步