一,防抖
- 每执行一次函数,都要等待固定的时间后。。才会去执行函数。应用场景:输入搜索。快速点击按钮触发请求等。
- debouce的模拟实现;
Function.prototype.myDebounce = function(callback, wait) {
let timer = null;
return function(...rest) {
if(timer) {
clearTimeout(tiemr);
}
setTimeout(()=> {
callback.apply(this, rest);
}, wait)
}
}
二,节流
- 在一段时间内。无论触发多少次函数。都只执行一次。应用场景:滚动拉接口加载数据等。
- throttle的模拟实现
Function.prototype.myThrottle = function(cb, wait) {
let flag = false;
return function(...arg) {
if(flag) {
return;
}
flag = true;
setTimeout(() => {
cb.apply(this, arg);
flag = false;
}, wait)
}
}