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
			| 
											3 years ago
										 | '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']; |