throttle
按钮
var COUNT = 0,
demo = document.getElementById('demo');
function testFn() {
demo.innerHTML += 'testFN 被调用了 ' + ++COUNT + '次
';
}
var throttle = function(fn, delay, atleast) {
var timer = null;
var previous = null;
return function() {
var now = +new Date();
if (!previous) previous = now;
if (atleast && now - previous > atleast) {
fn();
// 重置上一次开始时间为本次结束时间
previous = now;
clearTimeout(timer);
} else {
clearTimeout(timer);
timer = setTimeout(function() {
fn();
previous = null;
}, delay);
}
}
};
document.getElementById('btn').onclick = throttle(testFn, 500, 1000);