1234567891011121314151617181920212223242526272829303132 |
- /**
- * Debounce callback execution
- */
- function debounce(fn, threshold, isAsap){
- var timeout, result;
- function debounced(){
- var args = arguments, context = this;
- function delayed(){
- if (! isAsap) {
- result = fn.apply(context, args);
- }
- timeout = null;
- }
- if (timeout) {
- clearTimeout(timeout);
- } else if (isAsap) {
- result = fn.apply(context, args);
- }
- timeout = setTimeout(delayed, threshold);
- return result;
- }
- debounced.cancel = function(){
- clearTimeout(timeout);
- };
- return debounced;
- }
- module.exports = debounce;
|