summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Early <alexander.early@gmail.com>2017-04-03 00:00:32 -0700
committerAlexander Early <alexander.early@gmail.com>2017-04-03 00:00:32 -0700
commit2857bc74eea2cd888207dfc4e9e23e23a77213bd (patch)
tree6046eb03b8ea2e4e62e279c984c064722af424b9
parent40144660eb1fc75a05102c93d98fe15a16ebd7da (diff)
downloadasync-2857bc74eea2cd888207dfc4e9e23e23a77213bd.tar.gz
optimize whilst and family, seq, and reflect
-rw-r--r--lib/doDuring.js9
-rw-r--r--lib/doWhilst.js7
-rw-r--r--lib/reflect.js14
-rw-r--r--lib/seq.js6
-rw-r--r--lib/whilst.js8
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);
});
diff --git a/lib/seq.js b/lib/seq.js
index 4fceceb..9e86aca 100644
--- a/lib/seq.js
+++ b/lib/seq.js
@@ -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);
}