Version 3.18.1

APIs

  • Begin typing in the search box above to see results.
Show:

File: parallel/js/parallel.js

 
 /**
 * A concurrent parallel processor to help in running several async functions.
 * @module parallel
 * @main parallel
 */
 
 /**
 A concurrent parallel processor to help in running several async functions.
 
 var stack = new Y.Parallel();
 
 for (var i = 0; i < 15; i++) {
 Y.io('./api/json/' + i, {
 on: {
 success: stack.add(function() {
 Y.log('Done!');
 })
 }
 });
 }
 
 stack.done(function() {
 Y.log('All IO requests complete!');
 });
 
 @class Parallel
 @param {Object} o A config object
 @param {Object} [o.context=Y] The execution context of the callback to done
 
 
 */
 
 Y.Parallel = function(o) {
 this.config = o || {};
 this.results = [];
 this.context = this.config.context || Y;
 this.total = 0;
 this.finished = 0;
 };
 
 Y.Parallel.prototype = {
 /**
 * An Array of results from all the callbacks in the stack
 * @property results
 * @type Array
 */
 
 results: null,
 /**
 * The total items in the stack
 * @property total
 * @type Number
 */
 total: null,
 /**
 * The number of stacked callbacks executed
 * @property finished
 * @type Number
 */
 finished: null,
 /**
 * Add a callback to the stack
 * @method add
 * @param {Function} fn The function callback we are waiting for
 */
 add: function (fn) {
 var self = this,
 index = self.total;
 
 self.total += 1;
 
 return function () {
 self.finished++;
 self.results[index] = (fn && fn.apply(self.context, arguments)) ||
 (arguments.length === 1 ? arguments[0] : Y.Array(arguments));
 
 self.test();
 };
 },
 /**
 * Test to see if all registered items in the stack have completed, if so call the callback to `done`
 * @method test
 */
 test: function () {
 var self = this;
 if (self.finished >= self.total && self.callback) {
 self.callback.call(self.context, self.results, self.data);
 }
 },
 /**
 * The method to call when all the items in the stack are complete.
 * @method done
 * @param {Function} callback The callback to execute on complete
 * @param {Mixed} callback.results The results of all the callbacks in the stack
 * @param {Mixed} [callback.data] The data given to the `done` method
 * @param {Mixed} data Mixed data to pass to the success callback
 */
 done: function (callback, data) {
 this.callback = callback;
 this.data = data;
 this.test();
 }
 };
 
 

AltStyle によって変換されたページ (->オリジナル) /