JavaScript節流函式
阿新 • • 發佈:2018-11-06
var throttle = function(fn, delay, mustRunDelay){
var timer = null;
var start;
// 這裡是利用一個閉包來儲存變數,避免汙染全域性變數
return function(){
var context = this,
args = arguments,
current = +new Date();
clearTimeout(timer);
if(!start){
// 設定開始時間標記
start = current;
}
if(current - start >= mustRunDelay){
fn.apply(context, args);
start = current;
}
else {
timer = setTimeout(function(){
fn.apply(context, args);
}, delay);
}
};
};