关于javascript:js防抖和节流

3次阅读

共计 644 个字符,预计需要花费 2 分钟才能阅读完成。

一,防抖

1,定义
触发高频事件后 n 秒内函数只会执行一次,如果 n 秒内高频事件再次被触发,则从新计算工夫(就是之前的触发动作都是有效了,必须等肯定工夫)。即只有进行事件够长了,才会执行一次。
2, 实用场景
高频触发的事件。例如 keyup,onmousemove,onchange 等事件,表单的的反复提交等
3, 简易版

function debounce(fn,wait){//fn 须要防抖事件,wait 期待事件。let timer;
    return ()=>{if(timer){clearTimeout(timer)// 移除上次操作。}
        setTimeout(()=>{fn.apply(this,arguments)},wait)
    }
}
二,节流

1, 定义
单位工夫内,只会执行一次的函数。
2, 应用场景
scroll 等可能容易导频繁触发的事件,须要节流浓缩产生的频率。
3, 代码实现
⑴定时器

function throttle(fn,wait){
    let timer=null
    return function(){timer=setTimeout(()=>{fn.apply(this,arguments)},wait)
        timer=null
    }
}

⑵比照工夫戳版

function throttle(fn,wait){let preTimer=new Date()
    return function(){if(new Date()>=preTimer+wait){fn.apply(this,arguments)
            preTimer=new Date()}
    }
}
正文完
 0