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.
		
		
		
		
		
			
		
			
				
					30 lines
				
				533 B
			
		
		
			
		
	
	
					30 lines
				
				533 B
			| 
								 
											3 years ago
										 
									 | 
							
								var abort = require('./abort.js')
							 | 
						||
| 
								 | 
							
								  , async = require('./async.js')
							 | 
						||
| 
								 | 
							
								  ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// API
							 | 
						||
| 
								 | 
							
								module.exports = terminator;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Terminates jobs in the attached state context
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @this  AsyncKitState#
							 | 
						||
| 
								 | 
							
								 * @param {function} callback - final callback to invoke after termination
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function terminator(callback)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  if (!Object.keys(this.jobs).length)
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    return;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // fast forward iteration index
							 | 
						||
| 
								 | 
							
								  this.index = this.size;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // abort jobs
							 | 
						||
| 
								 | 
							
								  abort(this);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // send back results we have so far
							 | 
						||
| 
								 | 
							
								  async(callback)(null, this.results);
							 | 
						||
| 
								 | 
							
								}
							 |