diff options
author | Graeme Yeates <yeatesgraeme@gmail.com> | 2015-07-02 10:49:31 -0400 |
---|---|---|
committer | Graeme Yeates <yeatesgraeme@gmail.com> | 2015-07-02 10:49:31 -0400 |
commit | 0ed159afd094ff1446fce6d616064f9c31fb7d2a (patch) | |
tree | ad334a1038c0ab7b727a349b320c6b73ec506cd2 /lib/async.js | |
parent | fd7a99c09ceca52e629f70d0ca4cd7a387fb07c1 (diff) | |
download | async-0ed159afd094ff1446fce6d616064f9c31fb7d2a.tar.gz |
Share the implementation of some and every
Diffstat (limited to 'lib/async.js')
-rw-r--r-- | lib/async.js | 50 |
1 files changed, 24 insertions, 26 deletions
diff --git a/lib/async.js b/lib/async.js index 67eb379..8b467eb 100644 --- a/lib/async.js +++ b/lib/async.js @@ -9,6 +9,12 @@ var async = {}; function noop() {} + function identity(v) { + return v; + } + function notId(v) { + return !v; + } // global on the server, window in the browser var previous_async; @@ -449,35 +455,27 @@ async.detect = doParallel(_detect); async.detectSeries = doSeries(_detect); - async.any = - async.some = function (arr, iterator, main_callback) { - async.eachOf(arr, function (x, _, callback) { - iterator(x, function (v) { - if (v) { - main_callback(true); - main_callback = noop; - } - callback(); + function _createTester(eachfn, check, defaultValue) { + return function(arr, iterator, main_callback) { + eachfn(arr, function (x, _, callback) { + iterator(x, function (v) { + if (check(v)) { + main_callback(!defaultValue); + main_callback = noop; + } + callback(); + }); + }, function () { + main_callback(defaultValue); }); - }, function () { - main_callback(false); - }); - }; + }; + } + + async.any = + async.some = _createTester(async.eachOf, identity, false); async.all = - async.every = function (arr, iterator, main_callback) { - async.eachOf(arr, function (x, _, callback) { - iterator(x, function (v) { - if (!v) { - main_callback(false); - main_callback = noop; - } - callback(); - }); - }, function () { - main_callback(true); - }); - }; + async.every = _createTester(async.eachOf, notId, true); async.sortBy = function (arr, iterator, callback) { async.map(arr, function (x, callback) { |