一句话搞懂:防抖和节流

这两个概念都是为了解决同一个问题:某些操作触发得太频繁,导致性能浪费甚至页面卡死。


先打个比方

想象你在按电梯按钮:

      没有防抖/节流:你疯狂连按100次按钮,电梯就收到100次请求,系统忙疯了。

      防抖:不管你按多少次,电梯只在你最后一次按完、安静了几秒后,才执行一次关门动作。

      节流:不管你按多少次,电梯每隔固定时间(比如1秒) 最多只响应一次,其余的按了也白按。

防抖(Debounce)

核心思想:等你消停了,我再干活。

每次触发事件时,先等一小会儿。如果在这段时间内又触发了,就重新计时。直到连续一段时间内没有再触发,才真正执行一次。

典型场景:

      搜索框输入:用户打字时,不用每敲一个字就发一次请求,而是等用户停下来了再搜索。

      窗口 resize:用户拖动窗口大小时,不用每一像素都重新计算布局,等用户拖完松手再处理。

节流(Throttle)

核心思想:不管你怎么折腾,我固定频率干活。

不管事件触发得多频繁,每隔固定时间只执行一次,其余的触发全部忽略。

典型场景:

      滚动加载:用户滚动页面时,不用每一毫秒都检查是否到底部,每隔200ms检查一次就够了。

      按钮连点:防止用户疯狂点击提交按钮,1秒内只允许提交一次。


一句话总结

      防抖:你尽管折腾,等你安静下来我再干活。

      节流:你尽管折腾,我按自己的节奏干活。

两者都是为了让程序"别那么累",只是策略不同:防抖追求少干活,节流追求均匀地干活。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容