UNPKG

sink

Version:
49 lines (48 loc) 1.64 kB
(function() { var call, q; var __slice = Array.prototype.slice; ((typeof window !== "undefined" && window !== null) || exports).q = (q = function(func) { var args; var _len = arguments.length, _result = _len >= 3, cb = arguments[_result ? _len - 1 : 1]; args = __slice.call(arguments, 1, _len - 1); (q.callbacks || (q.callbacks = [])).push(function() { return call(func, args, cb, function(cb, results) { var _ref, callbacks; _ref = [q.callbacks, [null]]; callbacks = _ref[0]; q.callbacks = _ref[1]; cb.apply(this, results); q.callbacks = q.callbacks.slice(1).concat(callbacks.slice(1)); return (typeof (_ref = q.callbacks[0]) === "function" ? _ref() : undefined); }); }); if (q.callbacks.length === 1) { return q.callbacks[0](); } }); q.parallel = function(body) { var parallel; parallel = function(done) { return body(function(func) { var args; var _len = arguments.length, _result = _len >= 3, cb = arguments[_result ? _len - 1 : 1]; args = __slice.call(arguments, 1, _len - 1); q.i = (q.i || 0) + 1; return call(func, args, cb, function(cb, results) { cb.apply(this, results); if (--q.i === 0) { return done(); } }); }); }; return q(parallel, function() {}); }; call = function(func, args, cb, body) { return cb ? func.apply(this, args.concat([function() { var results; results = __slice.call(arguments, 0); return body(cb, results); }])) : body(func); }; }).call(this);