forked from caolan/async
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathseries.js
39 lines (37 loc) · 1.18 KB
/
series.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
'use strict';
var utils = require( './utils' );
var antisync = {
mapSeries: require( './mapseries' ),
eachSeries: require( './eachseries' )
};
module.exports = function series( tasks, callback ) {
callback = callback || function() {};
if ( utils.isArray( tasks ) ) {
antisync.mapSeries( tasks, function( fn, callback ) {
if ( fn ) {
fn( function( err ) {
var args = Array.prototype.slice.call( arguments, 1 );
if ( args.length <= 1 ) {
args = args[ 0 ];
}
callback.call( null, err, args );
} );
}
}, callback );
}
else {
var results = {};
antisync.eachSeries( utils.keys( tasks ), function( k, callback ) {
tasks[ k ]( function( err ) {
var args = Array.prototype.slice.call( arguments, 1 );
if ( args.length <= 1 ) {
args = args[ 0 ];
}
results[ k ] = args;
callback( err );
} );
}, function( err ) {
callback( err, results );
} );
}
};