summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGraeme Yeates <yeatesgraeme@gmail.com>2016-07-21 10:18:08 -0400
committerGitHub <noreply@github.com>2016-07-21 10:18:08 -0400
commit72a781044621e9b9ff036de7ad207f1f0ff24cee (patch)
treea1ced6a8ee4e6cc0f6d7f1aa6f8e8c3a1ba42682
parentddef4334de9a654d9b34a3faed5eaa37b673d414 (diff)
parent5cea59da010c4f7a3a0e178cec3d1d1a5bad85ec (diff)
downloadasync-72a781044621e9b9ff036de7ad207f1f0ff24cee.tar.gz
Merge pull request #1245 from caolan/each-cleanup
Minor cleanups to eachOfLimit
-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();
};
}