1'use strict'; 2 3Object.defineProperty(exports, "__esModule", { 4 value: true 5}); 6exports.default = reflectAll; 7 8var _reflect = require('./reflect.js'); 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'];