防抖(debounce)
函数防抖是指当一个函数在短时间内频繁调用时,让函数延迟一段时间后执行一次。例如,当用户频繁点击按钮时,不需要每次点击都响应事件,这样非常消耗性能,这时我们可以设置函数防抖。下面让我们实现防抖函数:
// 防抖动函数
function debounce(fn,wait=50,immediate) {
let timer;
return function() {
if(immediate) {
fn.apply(this,arguments)
}
if(timer) clearTimeout(timer)
timer = setTimeout(()=> {
fn.apply(this,arguments)
},wait)
}
}
节流(throttle)
节流是指在规定的时间内执行固定次数代码。
//节流函数
function throttle(fn, wait) {
let prev = new Date();
return function() {
const args = arguments;
const now = new Date();
if (now - prev > wait) {
fn.apply(this, args);
prev = new Date();
}
}