From 06813bffd737a183d01e0fa89d70a31635019676 Mon Sep 17 00:00:00 2001 From: mtone Date: Mon, 9 Jun 2014 21:37:49 -0400 Subject: Added async.someLimit When checking if a folder contains subfolders or not (fs.readdir -> fs.stat -> some(is_a_Folder)), getting crashes when listing Windows shares from Ubuntu VM. someLimit avoids the problem. Test for someLimit added anyLimit alias and updated doc. removed anyLimit alias --- lib/async.js | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'lib/async.js') diff --git a/lib/async.js b/lib/async.js index 8b467eb..f0e3adf 100644 --- a/lib/async.js +++ b/lib/async.js @@ -456,8 +456,11 @@ async.detectSeries = doSeries(_detect); function _createTester(eachfn, check, defaultValue) { - return function(arr, iterator, main_callback) { - eachfn(arr, function (x, _, callback) { + return function(arr, limit, iterator, main_callback) { + function done() { + main_callback(defaultValue); + } + function iteratee(x, _, callback) { iterator(x, function (v) { if (check(v)) { main_callback(!defaultValue); @@ -465,15 +468,22 @@ } callback(); }); - }, function () { - main_callback(defaultValue); - }); + } + if (arguments.length > 3) { + eachfn(arr, limit, iteratee, done); + } else { + main_callback = iterator; + iterator = limit; + eachfn(arr, iteratee, done); + } }; } async.any = async.some = _createTester(async.eachOf, identity, false); + async.someLimit = _createTester(async.eachOfLimit, identity, false); + async.all = async.every = _createTester(async.eachOf, notId, true); -- cgit v1.2.1