// 防抖 有timeId先清楚,在重新赋值新的timeId
// 窗口resize 输入key搜索
// 只需要最后一次的结果
function debounce(fn, delay) {
var timeId;
return (...args) =>{
clearTimeout(timeId);
timeId = setTimeout(() =>{
fn(...args);
}, delay);
}
}
// 一段时间只执行一次
// 疯狂点击
// 页面无限加载
// 用户滚动页面
// 每隔一段时间发送ajax,而不是等用户停止滚动后再去发请求
// 写法一 先等1s触发第一次
function throttle(fn, delay) {
var timeId;
return (...args) => {
if(timeId) return;
timeId = setTimeout(() =>{
fn(...args);
clearTimeout(timeId);
})
}
}
// 写法二 先触发再等1s触发第二次
function throttle(fn, delay) {
var time;
return (...args) => {
if(!time || Date.now() - time >= delay) {
fn(...args);
time = Date.now();
}
}
}
手写防抖和节流
最新推荐文章于 2024-08-19 21:21:31 发布