src/cm/media/js/lib/yui/yui3-3.15.0/build/parallel/parallel-debug.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 602 e16a97fb364a
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('parallel', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
* A concurrent parallel processor to help in running several async functions.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
* @module parallel
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
* @main parallel
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
*/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
A concurrent parallel processor to help in running several async functions.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
    var stack = new Y.Parallel();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
    for (var i = 0; i < 15; i++) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
        Y.io('./api/json/' + i, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
            on: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
                success: stack.add(function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
                    Y.log('Done!');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
                })
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
        });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
    stack.done(function() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
        Y.log('All IO requests complete!');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
    });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
@class Parallel
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
@param {Object} o A config object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
@param {Object} [o.context=Y] The execution context of the callback to done
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
*/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
Y.Parallel = function(o) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
    this.config = o || {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
    this.results = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
    this.context = this.config.context || Y;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
    this.total = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
    this.finished = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
Y.Parallel.prototype = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
    * An Array of results from all the callbacks in the stack
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
    * @property results
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
    * @type Array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
    results: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
    * The total items in the stack
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
    * @property total
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
    * @type Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
    total: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
    * The number of stacked callbacks executed
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
    * @property finished
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
    * @type Number
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
    finished: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
    * Add a callback to the stack
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
    * @method add
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
    * @param {Function} fn The function callback we are waiting for
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
    add: function (fn) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
        var self = this,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
            index = self.total;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
        self.total += 1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
        return function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
            self.finished++;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
            self.results[index] = (fn && fn.apply(self.context, arguments)) ||
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
                (arguments.length === 1 ? arguments[0] : Y.Array(arguments));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
            self.test();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
    * Test to see if all registered items in the stack have completed, if so call the callback to `done`
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
    * @method test
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
    test: function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
        var self = this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
        if (self.finished >= self.total && self.callback) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
            self.callback.call(self.context, self.results, self.data);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
    * The method to call when all the items in the stack are complete.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
    * @method done
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
    * @param {Function} callback The callback to execute on complete
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
    * @param {Mixed} callback.results The results of all the callbacks in the stack
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
    * @param {Mixed} [callback.data] The data given to the `done` method
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
    * @param {Mixed} data Mixed data to pass to the success callback
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
    done: function (callback, data) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
        this.callback = callback;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
        this.data = data;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
        this.test();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
}, '@VERSION@', {"requires": ["yui-base"]});