一文读懂:什么时候该用防抖,什么时候该用节流
在 JavaScript 开发中,面对像“滚动页面”“窗口缩放”或者“搜索框输入”这种高频触发的事件,如果代码每触发一次就执行一次任务,电脑很容易“累死”(浏览器卡顿、服务器压力大)。 为了解决这个问题,我们通常会用到防抖(Debounce)和节流(Throttle)。它们就像是给高频事件安上了“减速带”或“过滤器”。 防抖(Debouncing)防抖的核心逻辑是:当事件触发时,不立刻执行,而是等一段时间。如果这段时间内事件又触发了,就重新计时。 就像电脑休眠。你设置了 10 分钟不动就关屏,如果你在第 9 分钟动了下鼠标,电脑会重新开始数 10 分钟。只有当你整整 10 分钟没碰它,它才真的关屏。 核心理念: “等最后一个人上车再发车”。 12345678910function debounce(fn, delay) { let timer = null; // 准备一个闹钟变量 return function(...args) { // 如果闹钟还没响又触发了,赶紧把旧闹钟掐了,重新定一个 if (timer) clearTimeout(t...