mirror of
				https://scm.univ-tours.fr/22107988t/rappaurio-sae501_502.git
				synced 2025-11-04 06:05:22 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			34 lines
		
	
	
		
			702 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			702 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
/**
 | 
						|
 * Throttle decorator
 | 
						|
 * @param {Function} fn
 | 
						|
 * @param {Number} freq
 | 
						|
 * @return {Function}
 | 
						|
 */
 | 
						|
function throttle(fn, freq) {
 | 
						|
  let timestamp = 0;
 | 
						|
  const threshold = 1000 / freq;
 | 
						|
  let timer = null;
 | 
						|
  return function throttled(force, args) {
 | 
						|
    const now = Date.now();
 | 
						|
    if (force || now - timestamp > threshold) {
 | 
						|
      if (timer) {
 | 
						|
        clearTimeout(timer);
 | 
						|
        timer = null;
 | 
						|
      }
 | 
						|
      timestamp = now;
 | 
						|
      return fn.apply(null, args);
 | 
						|
    }
 | 
						|
    if (!timer) {
 | 
						|
      timer = setTimeout(() => {
 | 
						|
        timer = null;
 | 
						|
        timestamp = Date.now();
 | 
						|
        return fn.apply(null, args);
 | 
						|
      }, threshold - (now - timestamp));
 | 
						|
    }
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
export default throttle;
 |