diff options
author | Alexander Early <alexander.early@gmail.com> | 2017-04-03 00:00:32 -0700 |
---|---|---|
committer | Alexander Early <alexander.early@gmail.com> | 2017-04-03 00:00:32 -0700 |
commit | 2857bc74eea2cd888207dfc4e9e23e23a77213bd (patch) | |
tree | 6046eb03b8ea2e4e62e279c984c064722af424b9 | |
parent | 40144660eb1fc75a05102c93d98fe15a16ebd7da (diff) | |
download | async-2857bc74eea2cd888207dfc4e9e23e23a77213bd.tar.gz |
optimize whilst and family, seq, and reflect
-rw-r--r-- | lib/doDuring.js | 9 | ||||
-rw-r--r-- | lib/doWhilst.js | 7 | ||||
-rw-r--r-- | lib/reflect.js | 14 | ||||
-rw-r--r-- | lib/seq.js | 6 | ||||
-rw-r--r-- | lib/whilst.js | 8 |
5 files changed, 22 insertions, 22 deletions
diff --git a/lib/doDuring.js b/lib/doDuring.js index 85a69c2..06aa21e 100644 --- a/lib/doDuring.js +++ b/lib/doDuring.js @@ -1,5 +1,5 @@ import noop from 'lodash/noop'; -import rest from './internal/rest'; +import slice from './internal/slice'; import onlyOnce from './internal/onlyOnce'; import wrapAsync from './internal/wrapAsync'; @@ -28,11 +28,12 @@ export default function doDuring(fn, test, callback) { var _fn = wrapAsync(fn); var _test = wrapAsync(test); - var next = rest(function(err, args) { - if (err) return callback(err); + function next(err/*, args...*/) { + if (err) return callback(err); + var args = slice(arguments, 1); args.push(check); _test.apply(this, args); - }); + }; function check(err, truth) { if (err) return callback(err); diff --git a/lib/doWhilst.js b/lib/doWhilst.js index 4407305..fa07874 100644 --- a/lib/doWhilst.js +++ b/lib/doWhilst.js @@ -1,5 +1,5 @@ import noop from 'lodash/noop'; -import rest from './internal/rest'; +import slice from './internal/slice'; import onlyOnce from './internal/onlyOnce'; import wrapAsync from './internal/wrapAsync'; @@ -29,10 +29,11 @@ import wrapAsync from './internal/wrapAsync'; export default function doWhilst(iteratee, test, callback) { callback = onlyOnce(callback || noop); var _iteratee = wrapAsync(iteratee); - var next = rest(function(err, args) { + var next = function(err/*, args...*/) { if (err) return callback(err); + var args = slice(arguments, 1); if (test.apply(this, args)) return _iteratee(next); callback.apply(null, [null].concat(args)); - }); + }; _iteratee(next); } diff --git a/lib/reflect.js b/lib/reflect.js index 9e0613b..d61c31e 100644 --- a/lib/reflect.js +++ b/lib/reflect.js @@ -1,5 +1,5 @@ import initialParams from './internal/initialParams'; -import rest from './internal/rest'; +import slice from './internal/slice'; import wrapAsync from './internal/wrapAsync'; /** @@ -44,23 +44,19 @@ import wrapAsync from './internal/wrapAsync'; export default function reflect(fn) { var _fn = wrapAsync(fn); return initialParams(function reflectOn(args, reflectCallback) { - args.push(rest(function callback(err, cbArgs) { + args.push(function callback(err, cbArg) { if (err) { reflectCallback(null, { error: err }); } else { - var value = null; - if (cbArgs.length === 1) { - value = cbArgs[0]; - } else if (cbArgs.length > 1) { - value = cbArgs; - } + var value = cbArg; + if (arguments.length > 2) value = slice(arguments, 1); reflectCallback(null, { value: value }); } - })); + }); return _fn.apply(this, args); }); @@ -1,5 +1,6 @@ import noop from 'lodash/noop'; import rest from './internal/rest'; +import slice from 'lodash/slice'; import reduce from './reduce'; import wrapAsync from './internal/wrapAsync'; import arrayMap from 'lodash/_arrayMap'; @@ -55,9 +56,10 @@ export default rest(function seq(functions) { } reduce(_functions, args, function(newargs, fn, cb) { - fn.apply(that, newargs.concat(rest(function(err, nextargs) { + fn.apply(that, newargs.concat(function(err/*, nextargs...*/) { + var nextargs = slice(arguments, 1); cb(err, nextargs); - }))); + })); }, function(err, results) { cb.apply(that, [err].concat(results)); diff --git a/lib/whilst.js b/lib/whilst.js index 57edad6..5c8880f 100644 --- a/lib/whilst.js +++ b/lib/whilst.js @@ -1,5 +1,5 @@ import noop from 'lodash/noop'; -import rest from './internal/rest'; +import slice from './internal/slice'; import onlyOnce from './internal/onlyOnce'; import wrapAsync from './internal/wrapAsync'; @@ -42,10 +42,10 @@ export default function whilst(test, iteratee, callback) { callback = onlyOnce(callback || noop); var _iteratee = wrapAsync(iteratee); if (!test()) return callback(null); - var next = rest(function(err, args) { + var next = function(err/*, args...*/) { if (err) return callback(err); if (test()) return _iteratee(next); - callback.apply(null, [null].concat(args)); - }); + callback.apply(null, [null].concat(slice(arguments, 1))); + }; _iteratee(next); } |