##Debounce

Use this a lot to delay user/server interaction to keep requests low

var debounce = function (func, threshold, execAsap) {

var timeout;

return function debounced () { var obj = this, args = arguments; function delayed () { if (!execAsap) func.apply(obj, args); timeout = null; };

if (timeout) clearTimeout(timeout); else if (execAsap) func.apply(obj, args);

timeout = setTimeout(delayed, threshold || 100); }; }

source