프로젝트

일반

사용자정보

통계
| 개정판:

root / HServer / 00.Server / 00.Program / node_modules / async / reflect.js

이력 | 보기 | 이력해설 | 다운로드 (2.23 KB)

1 39 HKM
'use strict';
2
3
Object.defineProperty(exports, "__esModule", {
4
    value: true
5
});
6
exports.default = reflect;
7
8
var _initialParams = require('./internal/initialParams');
9
10
var _initialParams2 = _interopRequireDefault(_initialParams);
11
12
var _rest = require('./internal/rest');
13
14
var _rest2 = _interopRequireDefault(_rest);
15
16
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
18
/**
19
 * Wraps the function in another function that always returns data even when it
20
 * errors.
21
 *
22
 * The object returned has either the property `error` or `value`.
23
 *
24
 * @name reflect
25
 * @static
26
 * @memberOf module:Utils
27
 * @method
28
 * @category Util
29
 * @param {Function} fn - The function you want to wrap
30
 * @returns {Function} - A function that always passes null to it's callback as
31
 * the error. The second argument to the callback will be an `object` with
32
 * either an `error` or a `value` property.
33
 * @example
34
 *
35
 * async.parallel([
36
 *     async.reflect(function(callback) {
37
 *         // do some stuff ...
38
 *         callback(null, 'one');
39
 *     }),
40
 *     async.reflect(function(callback) {
41
 *         // do some more stuff but error ...
42
 *         callback('bad stuff happened');
43
 *     }),
44
 *     async.reflect(function(callback) {
45
 *         // do some more stuff ...
46
 *         callback(null, 'two');
47
 *     })
48
 * ],
49
 * // optional callback
50
 * function(err, results) {
51
 *     // values
52
 *     // results[0].value = 'one'
53
 *     // results[1].error = 'bad stuff happened'
54
 *     // results[2].value = 'two'
55
 * });
56
 */
57
function reflect(fn) {
58
    return (0, _initialParams2.default)(function reflectOn(args, reflectCallback) {
59
        args.push((0, _rest2.default)(function callback(err, cbArgs) {
60
            if (err) {
61
                reflectCallback(null, {
62
                    error: err
63
                });
64
            } else {
65
                var value = null;
66
                if (cbArgs.length === 1) {
67
                    value = cbArgs[0];
68
                } else if (cbArgs.length > 1) {
69
                    value = cbArgs;
70
                }
71
                reflectCallback(null, {
72
                    value: value
73
                });
74
            }
75
        }));
76
77
        return fn.apply(this, args);
78
    });
79
}
80
module.exports = exports['default'];