/*
Copyright (c) 2012, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://yuilibrary.com/license/
*/
var Stack = function () {
this.errors = [];
this.finished = 0;
this.results = [];
this.total = 0;
};
Stack.prototype = {
add: function (fn) {
var self = this,
index = self.total;
self.total += 1;
return function (err) {
if (err) { self.errors[index] = err; }
self.finished += 1;
self.results[index] = fn.apply(null, arguments);
self.test();
};
},
test: function () {
if (this.finished >= this.total && this.callback) {
this.callback.call(null, this.errors.length ? this.errors : null,
this.results, this.data);
}
},
done: function (callback, data) {
this.callback = callback;
this.data = data;
this.test();
}
};
exports.Stack = Stack;
|