防抖 | 节流

1 防抖 | debounce

函数防抖:在特定时间内,只执行一次

function debounce(fn, delay) {
    // 定义一个空变量
    let timer = null
    return function() {
        clearTimeout(timer)  // 持续触发清除定时器就不会触发了
        timer = setTimeout(() => {
            fn.apply(this, arguments)
        }, delay)
    }
}

2 节流 | throttle

函数节流:在特定时间后,重新执行一次

function throttle(fn, delay) {
    // 定义一个标志
    let flag = true
    return function() {
        if (!flag) {
            // 不执行
            return false
        }
        // 在特定时间内,设置标志不执行
        flag = false
        setTimeout(() => {
            fn()
            flag = true
        }, delay)
    }
}
原文地址:https://www.cnblogs.com/0x29a/p/14296825.html