首页 > 技术文章 > 大前端JS篇之节流和防抖

vonlin 2022-02-15 23:21 原文

函数节流:高频事件触发后,在n秒内事件只触发一次,节流函数可以稀释函数的执行频率,应用场景:scroll,touchmove

function throttle(fn,delay){
    let can = true
    let func = () => {
        if(!can) return
        can = false
        setTimeout(() => {
            fn.apply(this,arguments)
            can = true
        },delay)
    }
    return func
}

 

函数防抖:高频事件触发后,在其后n秒内执行一次函数,如果在n秒内触发了,则重现开始计算时间,应用场景:input,联想搜索

function debounce(fn,delay){
    return function () {
        clearTimeout(timer)
        timer = setTimeout(() => {
            fn.apply(this,arguments)
        },delay)
    }
}

 

推荐阅读