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