xiaokeqi / i-learned

1 stars 0 forks source link

函数节流和防抖 #27

Open xiaokeqi opened 4 years ago

xiaokeqi commented 4 years ago

https://segmentfault.com/a/1190000008768202 函数节流: 指定时间间隔内调用函数fn,缩短频次。即每隔一段时间,主动执行fn 函数防抖 指定时间内调用函数fn,若这期间,函数又被重新调用,则重新计时。 举个例子 一个人进电梯,电梯开始计时,10秒后,无论进不进人,电梯门关闭,运行,这叫节流 一个人进电梯,电梯开始计时,此时进来了第二个人,电梯开始重新计时,10秒后,再关门运行。这叫防抖

xiaokeqi commented 4 years ago

实现_debounce

function _debounce(fn, wait) {
    var timer = null;
    return function() {
        clearTimeout(timer)
        timer = setTimeout(()=>{
           fn();
        }, wait)
    }
}
xiaokeqi commented 4 years ago

实现_throttle

function _throttle(fn, wait){
    var previous = null;
    return function(){
        var now =+ new Date();
         if(!previous){
             previous = now;
         }
         if(now-previous >= wait) {
               fn();
               previous = now;
          }
    }
}