2-11 防抖节流原理、区别以及应用,请用js实现。


防抖:
原理:触发事件后,逻辑延迟执行,如果在一定时间内再次触发,就清除上一次的定时,重新计时
区别:与节流的区别在与,如果一直持续不间断的触发事件,那么逻辑将永远都不会执行
应用:按钮的点击


function event() {
    console.log('事件触发')
}

function debounce(fn, delay) {
    let timeId = null;
    return function(...args) {
        clearTimeout(timeId)
        timeId = setTimeout(function(){
            //事件逻辑
            fn(...args)
        }, delay)
    }
}

onClick='debounce(event, 1000)'

节流:
原理:持续的触发事件,给定一定的事件间隔,只会触发一次。两次事件触发的时间间隔必须大于指定但时间,否则无法触发
区别:与防抖的区别在与,事件的触发是间断性的,在一段时间内,能触发多次
应用:模糊查询

function event() {
    console.log('事件触发')
}

function throttle(fn, delay) {
    let start = Date.now()
    return function(...args) {
        let end = Date.now()
        if (end - start < delay) {
            return
        }
        fn(...args);
        start = end;
    }
}

onClick='throttle(event, 1000)'

相关