27 lines
		
	
	
		
			441 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			27 lines
		
	
	
		
			441 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								module.exports = defer;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Runs provided function on next iteration of the event loop
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @param {function} fn - function to run
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function defer(fn)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  var nextTick = typeof setImmediate == 'function'
							 | 
						||
| 
								 | 
							
								    ? setImmediate
							 | 
						||
| 
								 | 
							
								    : (
							 | 
						||
| 
								 | 
							
								      typeof process == 'object' && typeof process.nextTick == 'function'
							 | 
						||
| 
								 | 
							
								      ? process.nextTick
							 | 
						||
| 
								 | 
							
								      : null
							 | 
						||
| 
								 | 
							
								    );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (nextTick)
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    nextTick(fn);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  else
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    setTimeout(fn, 0);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 |