| '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']; |