在前端开发过程中很多时候都使用了这两个技术。微信小程序中的函数防抖(debounce)和函数节流(throttle)都是常用的优化技术,主要用于限制函数的执行频率。
1. 函数防抖(debounce):
函数防抖的基本思想是:在一段时间内,如果连续触发事件,只执行最后一次,忽略中间的多次触发。常用于用户停止输入一段时间后才执行某些操作,如搜索、自动完成等。
下面是一个简单的函数防抖实现:
javascript
function debounce(fn, delay) {
let timer = null;
return function(...args) {
clearTimeout(timer);
timer = setTimeout(() => fn.apply(this, args), delay);
}
}
在这个实现中,如果连续触发事件,clearTimeout会取消前一次的定时器,只执行最后一次
2. 函数节流(throttle):
函数节流的基本思想是:在一段时间内,只执行一次函数。常用于滚动加载、轮询等场景。
下面是一个简单的函数节流实现:
javascript
function throttle(fn, limit) {
let inThrottle;
return function(...args) {
const context = this;
if (!inThrottle) {
fn.apply(context, args);
inThrottle = true;
setTimeout(() => inThrottle = false, limit);
}
}
}
在这个实现中,如果连续触发事件,只有第一次会执行函数,后续的触发会被忽略,直到定时器结束。在微信小程序中,你可以使用这些技术来优化你的代码,提高性能和用户体验。