30 lines
		
	
	
		
			533 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			533 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
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);
 | 
						|
}
 |