.
This commit is contained in:
		
							
								
								
									
										44
									
								
								qwen/nodejs/node_modules/axios/lib/helpers/throttle.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								qwen/nodejs/node_modules/axios/lib/helpers/throttle.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,44 @@
 | 
			
		||||
/**
 | 
			
		||||
 * Throttle decorator
 | 
			
		||||
 * @param {Function} fn
 | 
			
		||||
 * @param {Number} freq
 | 
			
		||||
 * @return {Function}
 | 
			
		||||
 */
 | 
			
		||||
function throttle(fn, freq) {
 | 
			
		||||
  let timestamp = 0;
 | 
			
		||||
  let threshold = 1000 / freq;
 | 
			
		||||
  let lastArgs;
 | 
			
		||||
  let timer;
 | 
			
		||||
 | 
			
		||||
  const invoke = (args, now = Date.now()) => {
 | 
			
		||||
    timestamp = now;
 | 
			
		||||
    lastArgs = null;
 | 
			
		||||
    if (timer) {
 | 
			
		||||
      clearTimeout(timer);
 | 
			
		||||
      timer = null;
 | 
			
		||||
    }
 | 
			
		||||
    fn(...args);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  const throttled = (...args) => {
 | 
			
		||||
    const now = Date.now();
 | 
			
		||||
    const passed = now - timestamp;
 | 
			
		||||
    if ( passed >= threshold) {
 | 
			
		||||
      invoke(args, now);
 | 
			
		||||
    } else {
 | 
			
		||||
      lastArgs = args;
 | 
			
		||||
      if (!timer) {
 | 
			
		||||
        timer = setTimeout(() => {
 | 
			
		||||
          timer = null;
 | 
			
		||||
          invoke(lastArgs)
 | 
			
		||||
        }, threshold - passed);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  const flush = () => lastArgs && invoke(lastArgs);
 | 
			
		||||
 | 
			
		||||
  return [throttled, flush];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default throttle;
 | 
			
		||||
		Reference in New Issue
	
	Block a user