JS 截留(throttle)&去抖(debounce)

在开发中会遇到页面操错频率很高的事件或者连续的事件,如果不进行性能的优化,就会出现页面卡顿的现象

eg:

    鼠标事件:mousemove/mouseover/mouseWheel...

    键盘事件:keypress/keyput/keydown.........

为了解决这类问题,常用的方法就是 throttle 和debounce。 两者都是用来控制某个函数在一定时间内执行多少次的解决方案。


throttle: 预先设定一个执行周期,当调用动作的时刻大于等于执行周期则执行该动作,然后进入下一个新的时间周期

throttle假设你正在乘电梯上楼,当电梯门关闭之前发现有人也要乘电梯,礼貌起见,你会按下开门开关,然后等他进电梯;但是,你是个没耐心的人,你最多只会等待电梯停留一分钟;在这一分钟内,你会开门让别人进来,但是过了一分钟之后,你就会关门,让电梯上楼。

debounce:当调用动作触发一段事件后,才会执行该动作,若在这段时间间隔内又调用此动作则将重新计算时间间隔

debounce假设你正在乘电梯上楼,当电梯门关闭之前发现有人也要乘电梯,礼貌起见,你会按下开门开关,然后等他进电梯;如果在电梯门关闭之前,又有人来了,你会继续开门;这样一直进行下去,你可能需要等待几分钟,最终没人进电梯了,才会关闭电梯门,然后上楼。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值