1 | var _ = require("./_");
|
2 | var genIterator = require("./genIterator");
|
3 | var isPromise = require("./isPromise");
|
4 |
|
5 | module.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 | };
|