防抖 节流
防抖或是节流:限制函数的执行次数
- 防抖:通过setTimeout的方式,在一定的时间间隔内,将多次触发变成一次触发;
- 节流:减少一段时间的触发频率;
防抖(debounce)
//立即执行防抖函数 function debounce(fn, duration) { let t = null return function() { if(!t) { fn.apply(this, arguments) t = setTimeout(() => { t = null }, duration || 2000) } } } //不立即执行防抖函数 function debounce(fn, duration) { let t = null return function() { if(t) { clearTimeout(t) } t = setTimeout(() => { fn.apply(this, arguments) }, duration || 2000) } }
节流(throttle)
function throttle(fn, delay) { let begin = 0 delay = delay || 1000 return function() { let end = new Date().getTime() if(end - begin > delay) { begin = end fn.apply(this, arguments) } } }#前端##学习路径#