Skip to content

防抖

js
// 执行最后一次
function debounce(fn, time) {
    let timer = null,flag = false
    return function (...params){
        if(timer) clearTimeout(timer)
        timer = setTimeout(() => {
            fn(...params)
            clearTimeout(timer)
        },time)
    }
}

// 执行第一次
function debounce1(fn, time) {
    let timer = 0
    return function (...params){
        if(Date.now() - timer < time) {
            timer = Date.now()
            return
        }
        timer = Date.now()
        fn(...params)
    }
}
function fn(i){
    console.log(i)
}

const dFn = debounce(fn,100)
const dFn1 = debounce1(fn,100)
for(let i = 0; i < 10000; i ++){
    dFn(i)
    dFn1(i)
}

// 0
// 9999
// 执行最后一次
function debounce(fn, time) {
    let timer = null,flag = false
    return function (...params){
        if(timer) clearTimeout(timer)
        timer = setTimeout(() => {
            fn(...params)
            clearTimeout(timer)
        },time)
    }
}

// 执行第一次
function debounce1(fn, time) {
    let timer = 0
    return function (...params){
        if(Date.now() - timer < time) {
            timer = Date.now()
            return
        }
        timer = Date.now()
        fn(...params)
    }
}
function fn(i){
    console.log(i)
}

const dFn = debounce(fn,100)
const dFn1 = debounce1(fn,100)
for(let i = 0; i < 10000; i ++){
    dFn(i)
    dFn1(i)
}

// 0
// 9999