diff options
Diffstat (limited to 'deps/npm/node_modules/slide/lib/chain.js')
-rw-r--r-- | deps/npm/node_modules/slide/lib/chain.js | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/deps/npm/node_modules/slide/lib/chain.js b/deps/npm/node_modules/slide/lib/chain.js new file mode 100644 index 0000000000..17b3711494 --- /dev/null +++ b/deps/npm/node_modules/slide/lib/chain.js @@ -0,0 +1,20 @@ +module.exports = chain +var bindActor = require("./bind-actor.js") +chain.first = {} ; chain.last = {} +function chain (things, cb) { + var res = [] + ;(function LOOP (i, len) { + if (i >= len) return cb(null,res) + if (Array.isArray(things[i])) + things[i] = bindActor.apply(null, + things[i].map(function(i){ + return (i===chain.first) ? res[0] + : (i===chain.last) + ? res[res.length - 1] : i })) + if (!things[i]) return LOOP(i + 1, len) + things[i](function (er, data) { + if (er) return cb(er, res) + if (data !== undefined) res = res.concat(data) + LOOP(i + 1, len) + }) + })(0, things.length) } |