防抖节流封装的函数实现和使用场景
防抖和节流是前端开发中常用的两种优化技术,它们可以有效地减少页面的性能问题,提高用户体验。在实际开发中,我们可以通过封装防抖和节流函数来简化代码,提高代码的可维护性和可读性。本文将介绍防抖节流封装的函数实现和使用场景。
一、防抖函数的实现
防抖函数的作用是在一定时间内,只执行最后一次触发事件的回调函数。这种技术可以避免频繁触发事件导致的性能问题。下面是一个简单的防抖函数的实现:
落组词是什么```javascript
function debounce(fn, delay) {
let timer = null;
return function() {
clearTimeout(timer);
timer = tTimeout(() => {
fn.apply(this, arguments);
}, delay);
};
}蜜蜂作文300字>101的英文
```
这个函数接受两个参数:回调函数和延迟时间。在函数内部,我们使用了一个计时器来记录最后一次触发事件的时间。如果在延迟时间内再次触发事件,我们会清除之前的计时器,并重新设置一个新的计时器。当计时器到达延迟时间后,我们会执行回调函数。
二、防抖函数的使用场景
防抖函数适用于以下场景:
1. 搜索框输入联想
当用户在搜索框中输入关键字时,我们可以使用防抖函数来减少请求次数。只有当用户停止输入一段时间后,我们才会发送请求。
```javascript
const archInput = document.querySelector('#arch-input');
红烧虾的家常做法archInput.addEventListener('input', debounce(() => {
cheating // 发送搜索请求
水瓶座的幸运数字}, 500));
```
2. 窗口大小改变
当窗口大小改变时,我们可以使用防抖函数来减少重绘次数。只有当用户停止调整窗口大
小一段时间后,我们才会重新计算布局。
```javascript
window.addEventListener('resize', debounce(() => {
// 重新计算布局
qq怎么盗号}, 500));
```
3. 按钮点击
当用户频繁点击按钮时,我们可以使用防抖函数来避免重复提交。只有当用户停止点击一段时间后,我们才会执行提交操作。
```javascript
const submitButton = document.querySelector('#submit-button');
submitButton.addEventListener('click', debounce(() => {
// 提交表单
}, 500));
```
三、节流函数的实现
节流函数的作用是在一定时间内,只执行一次触发事件的回调函数。这种技术可以避免频繁触发事件导致的性能问题。下面是一个简单的节流函数的实现:
```javascript
function throttle(fn, delay) {
let timer = null;
职场励志语录 let lastTime = 0;
return function() {
const now = w();
if (now - lastTime >= delay) {
fn.apply(this, arguments);
lastTime = now;
} el {
clearTimeout(timer);
timer = tTimeout(() => {
fn.apply(this, arguments);
lastTime = now;
}, delay - (now - lastTime));
}
};
}
```
这个函数接受两个参数:回调函数和延迟时间。在函数内部,我们使用了一个计时器和一个时间戳来记录最后一次触发事件的时间。如果当前时间与上一次触发事件的时间差大于等于延迟时间,我们会执行回调函数,并更新时间戳。如果时间差小于延迟时间,我们会清除之前的计时器,并重新设置一个新的计时器。当计时器到达延迟时间后,我们会执行回调函数,并更新时间戳。