1、什么是防抖:
规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效。
2、原理:
原理是维护一个计时器,规定在delay时间后触发函数,但是在delay时间内再次触发的话,就会取消之前的计时器而重新设置。这样一来,只有最后一次操作能被触发。
3、常用场景:
1、 实时搜索框(根据输入框的数据发送ajax请求)(keyup)
2、文本输入的验证(连续发送文字发送ajax请求验证,但只验证最后一次输入的内容)(input)
3、判断scroll是否滚动到底部(scroll)
4、按钮提交事件
function debounce(callback, delay) {
var t = null;
return function () {
clearTimeout(t);
t = setTimeout(callback, delay);
};
}
二、节流(throttle)
1、什么是节流:
在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时,重新触发定时器。
2、原理:
在第一次触发了setTimeout后,先把阀门关闭(使用一个Boolean变量),等执行完后再把阀门打开
3、常用场景:
1、窗口调整(resize)
2、页面滚动请求(scroll)
3、DOM元素的拖拽功能实现(mousemove)
4、类似电商抢购商品时的疯狂点击抢购按钮(mousedown)
function throttle(fn, wait) {
let time

最低0.47元/天 解锁文章
14万+

被折叠的 条评论
为什么被折叠?



