原问题为:什么是防抖和节流?有什么区别?如何实现?
相关参考:
自我总结:
防抖
高频事件触发后, n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间。
实现思路:1
2
3
4
5
6
7
8
9
10
11
12function debounce(func, awit) {
var timeout;
return function () {
var me = this;
var args = Array.protoType.slice.apply(arguments);
timeout && clearTimeout(timeout);
timeout = setTimeout(function () {
timeout = null;
func.apply(me, args);
}, awit);
};
}
节流
高频事件触发后,但在n秒内只会执行一次,所以节流会稀释函数的执行频率
防抖和节流区别:
假设一个用户一直触发这个函数,且每次触发函数的间隔小于wait,防抖的情况下只会调用一次,而节流的 情况会每隔一定时间(参数wait)调用函数。