/* 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;