let throttle = function(fn,intervalTime){ let lastTime = 0; returnfunction(){ let ctx = this; let now = newDate().getTime(); if(now-lastTime>= intervalTime){ lastTime = now; fn.apply(this,arguments) } } }
debounce 函数防抖
不论出发函数多少次,函数只在最后一次调用函数时开始计时,函数防抖
1 2 3 4 5 6 7
let debounce = function(fn,intervalTime){ let timer = null; 大专栏 函数节流throttle和防抖debounceine"> returnfunction(){ if(timer)clearTimeout(timer) timer = setTimeout(()=>fn.apply(this,arguments),intervalTime) } }
throttle debounce 结合优化
优化后的开源库版本的throttle函数
1 2 3 4 5 6 7 8 9 10 11 12 13
let throttle = function(fn,intervalTime){ let last = 0; let timer = null; returnfunction(){ let now = newDate.getTime(); if((now-last) < intervalTime}{ if(timer)clearTimeout(timer); setTimeout(fn.apply(this,arguments),intervalTime); }else{ fn.apply(this,arguments); } } }