假若有一個飲水機,規定按下按鈕以後2秒後開始出水,有個閒得x疼的人很快的按按鈕10秒,飲水機會做何反應呢?
防抖(debounce):在按下按鈕和出水的這2秒內若是還有人按按鈕,飲水機會從新開始計算2秒,也就是說老是以最新的操做爲基準來計算時間
節流:即便被人不間斷的按按鈕了10秒鐘,可是飲水機依然不緊不慢的2s出一次水,也就是說無論外部操做的多快,飲水機總會有本身的頻率動畫
function debounce(func, delay) { var timer; return function() { clearTimeout(timeout); timer = setTimeout(function(){ func(); },delay) }; };
function throttle(fn, threshhold) { var timer var start = Date.now(); return function () { var curr = Date.now(); clearTimeout(timer) if(curr - start >= threshhold){ fn() start = curr }else{ timer = setTimeout(function(){ fn() }, threshhold); } } }
說一個神器:可視化的防抖和節流,以動畫的形式看到二者的區別.net