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.
		
		
		
		
		
			
		
			
				
					
					
						
							90 lines
						
					
					
						
							3.0 KiB
						
					
					
				
			
		
		
	
	
							90 lines
						
					
					
						
							3.0 KiB
						
					
					
				'use strict'; | 
						|
 | 
						|
Object.defineProperty(exports, "__esModule", { | 
						|
  value: true | 
						|
}); | 
						|
exports.default = parallelLimit; | 
						|
 | 
						|
var _eachOf = require('./eachOf'); | 
						|
 | 
						|
var _eachOf2 = _interopRequireDefault(_eachOf); | 
						|
 | 
						|
var _parallel = require('./internal/parallel'); | 
						|
 | 
						|
var _parallel2 = _interopRequireDefault(_parallel); | 
						|
 | 
						|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | 
						|
 | 
						|
/** | 
						|
 * Run the `tasks` collection of functions in parallel, without waiting until | 
						|
 * the previous function has completed. If any of the functions pass an error to | 
						|
 * its callback, the main `callback` is immediately called with the value of the | 
						|
 * error. Once the `tasks` have completed, the results are passed to the final | 
						|
 * `callback` as an array. | 
						|
 * | 
						|
 * **Note:** `parallel` is about kicking-off I/O tasks in parallel, not about | 
						|
 * parallel execution of code.  If your tasks do not use any timers or perform | 
						|
 * any I/O, they will actually be executed in series.  Any synchronous setup | 
						|
 * sections for each task will happen one after the other.  JavaScript remains | 
						|
 * single-threaded. | 
						|
 * | 
						|
 * **Hint:** Use [`reflect`]{@link module:Utils.reflect} to continue the | 
						|
 * execution of other tasks when a task fails. | 
						|
 * | 
						|
 * It is also possible to use an object instead of an array. Each property will | 
						|
 * be run as a function and the results will be passed to the final `callback` | 
						|
 * as an object instead of an array. This can be a more readable way of handling | 
						|
 * results from {@link async.parallel}. | 
						|
 * | 
						|
 * @name parallel | 
						|
 * @static | 
						|
 * @memberOf module:ControlFlow | 
						|
 * @method | 
						|
 * @category Control Flow | 
						|
 * @param {Array|Iterable|Object} tasks - A collection of | 
						|
 * [async functions]{@link AsyncFunction} to run. | 
						|
 * Each async function can complete with any number of optional `result` values. | 
						|
 * @param {Function} [callback] - An optional callback to run once all the | 
						|
 * functions have completed successfully. This function gets a results array | 
						|
 * (or object) containing all the result arguments passed to the task callbacks. | 
						|
 * Invoked with (err, results). | 
						|
 * | 
						|
 * @example | 
						|
 * async.parallel([ | 
						|
 *     function(callback) { | 
						|
 *         setTimeout(function() { | 
						|
 *             callback(null, 'one'); | 
						|
 *         }, 200); | 
						|
 *     }, | 
						|
 *     function(callback) { | 
						|
 *         setTimeout(function() { | 
						|
 *             callback(null, 'two'); | 
						|
 *         }, 100); | 
						|
 *     } | 
						|
 * ], | 
						|
 * // optional callback | 
						|
 * function(err, results) { | 
						|
 *     // the results array will equal ['one','two'] even though | 
						|
 *     // the second function had a shorter timeout. | 
						|
 * }); | 
						|
 * | 
						|
 * // an example using an object instead of an array | 
						|
 * async.parallel({ | 
						|
 *     one: function(callback) { | 
						|
 *         setTimeout(function() { | 
						|
 *             callback(null, 1); | 
						|
 *         }, 200); | 
						|
 *     }, | 
						|
 *     two: function(callback) { | 
						|
 *         setTimeout(function() { | 
						|
 *             callback(null, 2); | 
						|
 *         }, 100); | 
						|
 *     } | 
						|
 * }, function(err, results) { | 
						|
 *     // results is now equals to: {one: 1, two: 2} | 
						|
 * }); | 
						|
 */ | 
						|
function parallelLimit(tasks, callback) { | 
						|
  (0, _parallel2.default)(_eachOf2.default, tasks, callback); | 
						|
} | 
						|
module.exports = exports['default']; |