Skip to content

节流

js
// 第一次不执行
function throttle(fn, time){
    let timer = null
    return function (...args){
        if(timer) return
        timer = setTimeout(() => {
            fn(...args)
            clearTimeout(timer)
            timer = null
        }, time)
    }
}

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

setInterval(
    throttle1(() => {
        console.log(1)
    }, 2000),
    1
)
// 第一次不执行
function throttle(fn, time){
    let timer = null
    return function (...args){
        if(timer) return
        timer = setTimeout(() => {
            fn(...args)
            clearTimeout(timer)
            timer = null
        }, time)
    }
}

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

setInterval(
    throttle1(() => {
        console.log(1)
    }, 2000),
    1
)