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.
85 lines
2.9 KiB
85 lines
2.9 KiB
'use strict'; |
|
|
|
Object.defineProperty(exports, "__esModule", { |
|
value: true |
|
}); |
|
exports.default = series; |
|
|
|
var _parallel = require('./internal/parallel'); |
|
|
|
var _parallel2 = _interopRequireDefault(_parallel); |
|
|
|
var _eachOfSeries = require('./eachOfSeries'); |
|
|
|
var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); |
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } |
|
|
|
/** |
|
* Run the functions in the `tasks` collection in series, each one running once |
|
* the previous function has completed. If any functions in the series pass an |
|
* error to its callback, no more functions are run, and `callback` is |
|
* immediately called with the value of the error. Otherwise, `callback` |
|
* receives an array of results when `tasks` have completed. |
|
* |
|
* 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.series}. |
|
* |
|
* **Note** that while many implementations preserve the order of object |
|
* properties, the [ECMAScript Language Specification](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6) |
|
* explicitly states that |
|
* |
|
* > The mechanics and order of enumerating the properties is not specified. |
|
* |
|
* So if you rely on the order in which your series of functions are executed, |
|
* and want this to work on all platforms, consider using an array. |
|
* |
|
* @name series |
|
* @static |
|
* @memberOf module:ControlFlow |
|
* @method |
|
* @category Control Flow |
|
* @param {Array|Iterable|Object} tasks - A collection containing |
|
* [async functions]{@link AsyncFunction} to run in series. |
|
* Each function can complete with any number of optional `result` values. |
|
* @param {Function} [callback] - An optional callback to run once all the |
|
* functions have completed. This function gets a results array (or object) |
|
* containing all the result arguments passed to the `task` callbacks. Invoked |
|
* with (err, result). |
|
* @example |
|
* async.series([ |
|
* function(callback) { |
|
* // do some stuff ... |
|
* callback(null, 'one'); |
|
* }, |
|
* function(callback) { |
|
* // do some more stuff ... |
|
* callback(null, 'two'); |
|
* } |
|
* ], |
|
* // optional callback |
|
* function(err, results) { |
|
* // results is now equal to ['one', 'two'] |
|
* }); |
|
* |
|
* async.series({ |
|
* one: function(callback) { |
|
* setTimeout(function() { |
|
* callback(null, 1); |
|
* }, 200); |
|
* }, |
|
* two: function(callback){ |
|
* setTimeout(function() { |
|
* callback(null, 2); |
|
* }, 100); |
|
* } |
|
* }, function(err, results) { |
|
* // results is now equal to: {one: 1, two: 2} |
|
* }); |
|
*/ |
|
function series(tasks, callback) { |
|
(0, _parallel2.default)(_eachOfSeries2.default, tasks, callback); |
|
} |
|
module.exports = exports['default']; |