summaryrefslogtreecommitdiff
path: root/lib/async.js
diff options
context:
space:
mode:
authorGraeme Yeates <yeatesgraeme@gmail.com>2015-07-02 10:49:31 -0400
committerGraeme Yeates <yeatesgraeme@gmail.com>2015-07-02 10:49:31 -0400
commit0ed159afd094ff1446fce6d616064f9c31fb7d2a (patch)
treead334a1038c0ab7b727a349b320c6b73ec506cd2 /lib/async.js
parentfd7a99c09ceca52e629f70d0ca4cd7a387fb07c1 (diff)
downloadasync-0ed159afd094ff1446fce6d616064f9c31fb7d2a.tar.gz
Share the implementation of some and every
Diffstat (limited to 'lib/async.js')
-rw-r--r--lib/async.js50
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) {