UNPKG

756 BJavaScriptView Raw
1var _ = require('./_');
2var genIterator = require('./genIterator');
3var isPromise = require('./isPromise');
4
5module.exports = function (iterable) {
6 var iter = genIterator(iterable);
7
8 return function (val) {
9 function run (pre) {
10 return pre.then(function (val) {
11 var task = iter.next(val);
12
13 if (task.done) {
14 return val;
15 }
16 var curr = task.value;
17 return run(
18 isPromise(curr) ? curr :
19 _.isFunction(curr) ? _.Promise.resolve(curr(val)) :
20 _.Promise.resolve(curr)
21 );
22 });
23 }
24
25 return run(_.Promise.resolve(val));
26 };
27};