js,防抖和节流
1. 节流: 用户浏览页面时会触发滚轮,移动鼠标等,这些都会频繁的触发接口去请求数据,会造成很大的浏览器开销,出现页面卡顿的情况,我们无法控制浏览器的频率但可以控制事件的触发频率,避免页面卡顿的情况。
2. 防抖: 例如一个搜索按钮,鼠标去触发按钮,当网络出现延迟或者数据返回比较慢的情况,用户出现多次点击去请求数据,造成多余的资源浪费,我们只需要触发最后一次点击即可。
// 节流
function Debouce(fn,wait) {
let timer = null;
return function(e) {
clearTimerout(timer)
timer = setTimeout(() =>{
fn.apply(this,...arguments)
},wait)
}
}
// 防抖
function Throttle(fn,wait) {
let flag = true;
return function() {
if(!flag) return
flag = false;
setTimeout(() => {
fn.apply(this,arguments)
flag = true;
},wait)
}
}
3. 实例
//监听浏览器滚动条
function showTop(){
const scrollTop = document.body.scrollTop || document.documentElement.scroollTop;
console.log()
}
浙公网安备 33010602011771号