summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGraeme Yeates <yeatesgraeme@gmail.com>2016-07-20 11:26:33 -0400
committerGraeme Yeates <yeatesgraeme@gmail.com>2016-07-20 11:26:33 -0400
commit5cea59da010c4f7a3a0e178cec3d1d1a5bad85ec (patch)
treef3f832f0a24c5383afc743a8934b031ade289fd2
parent5a129751180000fecaa2748fde876a47ccef0f7c (diff)
downloadasync-each-cleanup.tar.gz
Minor cleanups to eachOfLimiteach-cleanup
-rw-r--r--lib/internal/eachOfLimit.js38
1 files changed, 19 insertions, 19 deletions
diff --git a/lib/internal/eachOfLimit.js b/lib/internal/eachOfLimit.js
index 5e83463..61fd6a4 100644
--- a/lib/internal/eachOfLimit.js
+++ b/lib/internal/eachOfLimit.js
@@ -7,21 +7,29 @@ import onlyOnce from './onlyOnce';
export default function _eachOfLimit(limit) {
return function (obj, iteratee, callback) {
callback = once(callback || noop);
- obj = obj || [];
- var nextElem = iterator(obj);
- if (limit <= 0) {
+ if (limit <= 0 || !obj) {
return callback(null);
}
+ var nextElem = iterator(obj);
var done = false;
var running = 0;
- var errored = false;
- (function replenish () {
- if (done && running <= 0) {
+ function iterateeCallback(err) {
+ running -= 1;
+ if (err) {
+ done = true;
+ callback(err);
+ }
+ else if (done && running <= 0) {
return callback(null);
}
+ else {
+ replenish();
+ }
+ }
- while (running < limit && !errored) {
+ function replenish () {
+ while (running < limit && !done) {
var elem = nextElem();
if (elem === null) {
done = true;
@@ -31,18 +39,10 @@ export default function _eachOfLimit(limit) {
return;
}
running += 1;
- /* eslint {no-loop-func: 0} */
- iteratee(elem.value, elem.key, onlyOnce(function (err) {
- running -= 1;
- if (err) {
- callback(err);
- errored = true;
- }
- else {
- replenish();
- }
- }));
+ iteratee(elem.value, elem.key, onlyOnce(iterateeCallback));
}
- })();
+ }
+
+ replenish();
};
}