blob: d1ad247bf2e9015bda6e1df8bd8684f491623389 (
plain)
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
import reflect from './reflect';
import isArray from 'lodash/isArray';
/**
* A helper function that wraps an array of functions with reflect.
*
* @name reflectAll
* @static
* @memberOf async
* @see async.reflect
* @category Util
* @param {Array} tasks - The array of functions to wrap in `async.reflect`.
* @returns {Array} Returns an array of functions, each function wrapped in
* `async.reflect`
* @example
*
* let tasks = [
* function(callback) {
* setTimeout(function() {
* callback(null, 'one');
* }, 200);
* },
* function(callback) {
* // do some more stuff but error ...
* callback(new Error('bad stuff happened'));
* },
* function(callback) {
* setTimeout(function() {
* callback(null, 'two');
* }, 100);
* }
* ];
*
* async.parallel(async.reflectAll(tasks),
* // optional callback
* function(err, results) {
* // values
* // results[0].value = 'one'
* // results[1].error = Error('bad stuff happened')
* // results[2].value = 'two'
* });
*/
export default function reflectAll(tasks) {
var results;
if (isArray(tasks)) {
results = tasks.map(reflect);
} else {
var keys = Object.keys(tasks);
results = {};
keys.forEach(function(key) {
results[key] = reflect.call(this, tasks[key])
});
}
return results;
}
|