UNPKG

2.45 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = reflectAll;
7
8var _reflect = require('./reflect');
9
10var _reflect2 = _interopRequireDefault(_reflect);
11
12function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
14/**
15 * A helper function that wraps an array or an object of functions with `reflect`.
16 *
17 * @name reflectAll
18 * @static
19 * @memberOf module:Utils
20 * @method
21 * @see [async.reflect]{@link module:Utils.reflect}
22 * @category Util
23 * @param {Array|Object|Iterable} tasks - The collection of
24 * [async functions]{@link AsyncFunction} to wrap in `async.reflect`.
25 * @returns {Array} Returns an array of async functions, each wrapped in
26 * `async.reflect`
27 * @example
28 *
29 * let tasks = [
30 * function(callback) {
31 * setTimeout(function() {
32 * callback(null, 'one');
33 * }, 200);
34 * },
35 * function(callback) {
36 * // do some more stuff but error ...
37 * callback(new Error('bad stuff happened'));
38 * },
39 * function(callback) {
40 * setTimeout(function() {
41 * callback(null, 'two');
42 * }, 100);
43 * }
44 * ];
45 *
46 * async.parallel(async.reflectAll(tasks),
47 * // optional callback
48 * function(err, results) {
49 * // values
50 * // results[0].value = 'one'
51 * // results[1].error = Error('bad stuff happened')
52 * // results[2].value = 'two'
53 * });
54 *
55 * // an example using an object instead of an array
56 * let tasks = {
57 * one: function(callback) {
58 * setTimeout(function() {
59 * callback(null, 'one');
60 * }, 200);
61 * },
62 * two: function(callback) {
63 * callback('two');
64 * },
65 * three: function(callback) {
66 * setTimeout(function() {
67 * callback(null, 'three');
68 * }, 100);
69 * }
70 * };
71 *
72 * async.parallel(async.reflectAll(tasks),
73 * // optional callback
74 * function(err, results) {
75 * // values
76 * // results.one.value = 'one'
77 * // results.two.error = 'two'
78 * // results.three.value = 'three'
79 * });
80 */
81function reflectAll(tasks) {
82 var results;
83 if (Array.isArray(tasks)) {
84 results = tasks.map(_reflect2.default);
85 } else {
86 results = {};
87 Object.keys(tasks).forEach(key => {
88 results[key] = _reflect2.default.call(this, tasks[key]);
89 });
90 }
91 return results;
92}
93module.exports = exports['default'];
\No newline at end of file