@andranik-arakelyan/js-utilities
Version:
Javascript utilities
1 lines • 715 B
JavaScript
Object.defineProperty(exports,"__esModule",{value:true});exports.throttle=throttle;function throttle(func,wait){let timeout;let lastResult;let lastArgs;let lastThis;let lastCallTime=0;function throttled(...args){const now=Date.now();lastArgs=args;lastThis=this;if(lastCallTime===0||now>=lastCallTime+wait){lastCallTime=now;lastResult=func.apply(this,args);return lastResult}if(timeout===undefined){const remaining=wait-(now-lastCallTime);timeout=setTimeout((()=>{lastCallTime=Date.now();timeout=undefined;lastResult=func.apply(lastThis,lastArgs)}),remaining)}return lastResult}throttled.cancel=function(){if(timeout!==undefined){clearTimeout(timeout);timeout=undefined}lastCallTime=0};return throttled}
;