mirror of
				https://github.com/skishore/makemeahanzi.git
				synced 2025-10-31 02:45:49 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			38 lines
		
	
	
		
			941 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			941 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /** Used to detect hot functions by number of calls within a span of milliseconds. */
 | |
| var HOT_COUNT = 800,
 | |
|     HOT_SPAN = 16;
 | |
| 
 | |
| /* Built-in method references for those with the same name as other `lodash` methods. */
 | |
| var nativeNow = Date.now;
 | |
| 
 | |
| /**
 | |
|  * Creates a function that'll short out and invoke `identity` instead
 | |
|  * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
 | |
|  * milliseconds.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Function} func The function to restrict.
 | |
|  * @returns {Function} Returns the new shortable function.
 | |
|  */
 | |
| function shortOut(func) {
 | |
|   var count = 0,
 | |
|       lastCalled = 0;
 | |
| 
 | |
|   return function() {
 | |
|     var stamp = nativeNow(),
 | |
|         remaining = HOT_SPAN - (stamp - lastCalled);
 | |
| 
 | |
|     lastCalled = stamp;
 | |
|     if (remaining > 0) {
 | |
|       if (++count >= HOT_COUNT) {
 | |
|         return arguments[0];
 | |
|       }
 | |
|     } else {
 | |
|       count = 0;
 | |
|     }
 | |
|     return func.apply(undefined, arguments);
 | |
|   };
 | |
| }
 | |
| 
 | |
| module.exports = shortOut;
 | 
