五、防抖和节流的理解

78 阅读1分钟

防抖和节流的理解

1、防抖

概念:事件触发定义的函数后一段时间后才会执行,在此期间触发会重新计时,即只执行最后一次触发。

目的:为了防止用户连续触发事件,函数重复执行导致抖动。

非立即执行防抖函数  
* @param {Function} func  
* @param {number} delay  
* @returns  
*/  
function debounce(func, delay) {  
let timeout  
return function () {  
const _this = this  
const args = [...arguments]  
if (timeout) {  
clearTimeout(timeout)  
}  
timeout = setTimeout(() => {  
func.apply(_this, args)  
}, delay)  
}  
}

2、节流

概念:节流就是在规定时间内多次触发函数,但只执行一次。通常使用时间戳或者定时器实现。

理解:与防抖的区别在于,防抖需要重新计时,而节流不需要。