en.javascript.info/1-js/7-js-misc/3-setTimeout-setInterval/9-throttle/_js.view/solution.js
2015-03-09 18:48:58 +03:00

29 lines
No EOL
474 B
JavaScript

function throttle(func, ms) {
var isThrottled = false,
savedArgs,
savedThis;
function wrapper() {
if (isThrottled) {
savedArgs = arguments;
savedThis = this;
return;
}
func.apply(this, arguments);
isThrottled = true;
setTimeout(function() {
isThrottled = false;
if (savedArgs) {
wrapper.apply(savedThis, savedArgs);
savedArgs = savedThis = null;
}
}, ms);
}
return wrapper;
}