diff options
author | Graeme Yeates <yeatesgraeme@gmail.com> | 2016-07-20 11:26:33 -0400 |
---|---|---|
committer | Graeme Yeates <yeatesgraeme@gmail.com> | 2016-07-20 11:26:33 -0400 |
commit | 5cea59da010c4f7a3a0e178cec3d1d1a5bad85ec (patch) | |
tree | f3f832f0a24c5383afc743a8934b031ade289fd2 /lib/internal/eachOfLimit.js | |
parent | 5a129751180000fecaa2748fde876a47ccef0f7c (diff) | |
download | async-each-cleanup.tar.gz |
Minor cleanups to eachOfLimiteach-cleanup
Diffstat (limited to 'lib/internal/eachOfLimit.js')
-rw-r--r-- | lib/internal/eachOfLimit.js | 38 |
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(); }; } |