You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					35 lines
				
				599 B
			
		
		
			
		
	
	
					35 lines
				
				599 B
			| 
											3 years ago
										 | var defer = require('./defer.js'); | ||
|  | 
 | ||
|  | // API
 | ||
|  | module.exports = async; | ||
|  | 
 | ||
|  | /** | ||
|  |  * Runs provided callback asynchronously | ||
|  |  * even if callback itself is not | ||
|  |  * | ||
|  |  * @param   {function} callback - callback to invoke | ||
|  |  * @returns {function} - augmented callback | ||
|  |  */ | ||
|  | function async(callback) | ||
|  | { | ||
|  |   var isAsync = false; | ||
|  | 
 | ||
|  |   // check if async happened
 | ||
|  |   defer(function() { isAsync = true; }); | ||
|  | 
 | ||
|  |   return function async_callback(err, result) | ||
|  |   { | ||
|  |     if (isAsync) | ||
|  |     { | ||
|  |       callback(err, result); | ||
|  |     } | ||
|  |     else | ||
|  |     { | ||
|  |       defer(function nextTick_callback() | ||
|  |       { | ||
|  |         callback(err, result); | ||
|  |       }); | ||
|  |     } | ||
|  |   }; | ||
|  | } |