防抖和节流函数
控制频繁触发的函数
防抖
频繁触发的函数间隔小于设定的时间,指挥执行最后一次调用
javascript
const debounce = function (callback, duration = 200) {
let timer = null;
return function (...args) {
cleartimeout(timer);
timer = setTimeout(() => {
callback(...args);
}, duration);
};
};
节流
频繁触发的函数每隔一段设定的时间执行一次
javascript
const throttle = function (callback, duration) {
let canRun;
return function (...args) {
if (!canRun) {
return false;
}
canRun = false;
callback(...args);
setTimeout(() => {
canRun = true;
}, duration);
};
};