前端 JavaScript 防抖函数(debounce)
2024-08-11 10:35:19
函数防抖(debounce),就是指触发事件后,在 n 毫秒内函数只能执行一次,如果触发事件后在 n 毫内又触发了事件,则会重新计算函数延执行时间(在这里和函数节流区分一下,函数节流是在触发完事件之后的一段时间之内不能再次触发事件)。
示例代码如下:
```
function debounce(func, wait) {
let timeout;
return function () {
const context = this, args = arguments;
clearTimeout(timeout);
timeout = setTimeout(() => func.apply(context, args), wait);
};
}
function onResize() {
const width = window.innerWidth;
const height = window.innerHeight;
console.log(`Width: ${width}, Height: ${height}`);
}
const debouncedResize = debounce(onResize, 200);
useEffect(() => {
window.addEventListener('resize', debouncedResize);
return () => {
window.removeEventListener('resize', debouncedResize);
}
}, [])
```