diff options
author | Alexander Early <alexander.early@gmail.com> | 2015-07-20 14:12:18 -0700 |
---|---|---|
committer | Alexander Early <alexander.early@gmail.com> | 2015-07-20 14:12:18 -0700 |
commit | db7a64556097bb990ff4d5f9e3eba7b18df043eb (patch) | |
tree | dc89f5668fc3407d21f0fee1bf67620b89594f73 | |
parent | 0f5c1c5ccf720be2b4ee2c1930623410e5d7ecf9 (diff) | |
parent | ca131a6bf72d72f62e2a025b810fc20a1fc93b8e (diff) | |
download | async-db7a64556097bb990ff4d5f9e3eba7b18df043eb.tar.gz |
Merge pull request #853 from megawac/each
Implement eachOf via keyIterator
-rw-r--r-- | dist/async.js | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/dist/async.js b/dist/async.js index f3cfb80..a0652f3 100644 --- a/dist/async.js +++ b/dist/async.js @@ -224,22 +224,22 @@ async.forEachOf = async.eachOf = function (object, iterator, callback) { callback = _once(callback || noop); - object = object || []; - var size = _isArrayLike(object) ? object.length : _keys(object).length; - var completed = 0; - if (!size) { - return callback(null); - } - _each(object, function (value, key) { + + var nextKey = _keyIterator(obj); + var key, running = 0; + while ((key = nextKey()) != null) { + running += 1; iterator(object[key], key, only_once(done)); - }); + } + if (!running) { + callback (null); + } function done(err) { if (err) { callback(err); } else { - completed += 1; - if (completed >= size) { + if (--running) { callback(null); } } |