diff options
author | Graeme Yeates <yeatesgraeme@gmail.com> | 2015-09-07 12:52:15 -0400 |
---|---|---|
committer | Graeme Yeates <yeatesgraeme@gmail.com> | 2015-09-07 12:52:15 -0400 |
commit | 9d70ffa4ce65a6f10512ee8a3ebd30fda10f32c6 (patch) | |
tree | 844b44c12cd9838255966252bde7fde9f135c615 | |
parent | cc9d3d5f7380b731d4ece7f3a70adc5e74cadeec (diff) | |
download | async-eachOfLimitImpl.tar.gz |
implement eachof via eachOfLimiteachOfLimitImpl
-rw-r--r-- | lib/async.js | 34 |
1 files changed, 4 insertions, 30 deletions
diff --git a/lib/async.js b/lib/async.js index 4524a3c..6dd809b 100644 --- a/lib/async.js +++ b/lib/async.js @@ -221,31 +221,7 @@ }; async.forEachOf = - async.eachOf = function (object, iterator, callback) { - callback = _once(callback || noop); - - var iter = _keyIterator(object); - var key, completed = 0; - - while ((key = iter()) != null) { - completed += 1; - iterator(object[key], key, only_once(done)); - } - - if (completed === 0) callback(null); - - function done(err) { - completed--; - if (err) { - callback(err); - } - // Check key is null in case iterator isn't exhausted - // and done resolved synchronously. - else if (key === null && completed <= 0) { - callback(null); - } - } - }; + async.eachOf = _eachOfLimit(Infinity); async.forEachOfSeries = async.eachOfSeries = function (obj, iterator, callback) { @@ -288,7 +264,6 @@ }; function _eachOfLimit(limit) { - return function (obj, iterator, callback) { callback = _once(callback || noop); @@ -296,19 +271,18 @@ if (limit <= 0) { return callback(null); } - var done = false; + var key; var running = 0; var errored = false; (function replenish () { - if (done && running <= 0) { + if (key === null && running <= 0) { return callback(null); } while (running < limit && !errored) { - var key = nextKey(); + key = nextKey(); if (key === null) { - done = true; if (running <= 0) { callback(null); } |