qoopido.nucleus
Version:
Lightweight, atomic and modular JavaScript utility library that strongly encourages the creation and usage of small yet flexible, reusable and easily maintainable modules.
35 lines (25 loc) • 654 B
JavaScript
(function(setTimeout) {
'use strict';
function definition() {
return function functionDebounce(fn, delay, immediate) {
var timeout;
function debounced() {
var context = this,
parameter = arguments,
call = immediate && !timeout;
function execute() {
debounced.cancel();
!immediate && fn.apply(context, parameter);
}
debounced.cancel();
timeout = setTimeout(execute, parseInt(delay, 10) || 200);
call && fn.apply(context, parameter);
}
debounced.cancel = function() {
timeout = clearTimeout(timeout);
};
return debounced;
};
}
provide(definition);
}(setTimeout));