本文主要是介绍debounce 与throttle,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
背景
开发过程中我们会遇到一些场景,事件频繁被触发,导致频繁的DOM操作等,导致UI卡顿 甚至浏览器崩溃等。
1、window对象的resize、scroll 事件
2、拖拽时的mousemove事件
3、input的change、keyup事件等
4、游戏中的mousedown、keydown事件
5、发送请求按钮为了防止用户不停的点击
解决方案
这些场景我们会对他做节流处理,也就是说一段时间内触发的事件我们的函数只执行一次。throttle和debounce 都可以帮我们在一段时间内防止函数被多次调用。下面来聊一下debounce 和 throttle 这两种解决方案。
先查了一下这两个单词的英文意思,debounce:去抖;防反跳, throttle: 节流。
debounce:
当调用动作n毫秒后,才会执行该动作。如果这n毫秒内又调用该动作,则重新计算时间。
例如:一个点击事件,用了debounce,点击事件被执行直到你停止点击 n毫秒后。
throttle:
当调用动作被触发,立即执行,但是这n毫秒内,再次触发不会被执行。也就是说一个执行周期(n毫秒)内最多只能执行一次。
举个?:
页面存在一个按钮,点击时会触发点击事件。用throttle和debounce 做优化,设置执行周期为1000ms。然后不停的点击按钮。则:
debounce(handleClick,
这篇关于debounce 与throttle的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!