summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorcharlierudolph <charles.rudolph@originate.com>2016-02-16 11:07:40 -0800
committercharlierudolph <charles.rudolph@originate.com>2016-02-16 11:07:40 -0800
commit10ac9e9514d2cd6c3cfe1a4bf6785bdb4e146ab0 (patch)
treeeb979465c222d6498d2f3fb22f5839755dbe4a6e /lib
parent9688db38d9e7932601c219e5782fe99e1dbffc73 (diff)
downloadasync-10ac9e9514d2cd6c3cfe1a4bf6785bdb4e146ab0.tar.gz
filter, reject, detect, some, every with error
Diffstat (limited to 'lib')
-rw-r--r--lib/internal/createTester.js23
-rw-r--r--lib/internal/filter.js26
-rw-r--r--lib/internal/reject.js8
3 files changed, 41 insertions, 16 deletions
diff --git a/lib/internal/createTester.js b/lib/internal/createTester.js
index 1bf2e89..0e9e750 100644
--- a/lib/internal/createTester.js
+++ b/lib/internal/createTester.js
@@ -2,15 +2,26 @@
export default function _createTester(eachfn, check, getResult) {
return function(arr, limit, iterator, cb) {
- function done() {
- if (cb) cb(getResult(false, void 0));
+ function done(err) {
+ if (cb) {
+ if (err) {
+ cb(err);
+ } else {
+ cb(null, getResult(false, void 0));
+ }
+ }
}
function iteratee(x, _, callback) {
if (!cb) return callback();
- iterator(x, function (v) {
- if (cb && check(v)) {
- cb(getResult(true, x));
- cb = iterator = false;
+ iterator(x, function (err, v) {
+ if (cb) {
+ if (err) {
+ cb(err);
+ cb = iterator = false;
+ } else if (check(v)) {
+ cb(null, getResult(true, x));
+ cb = iterator = false;
+ }
}
callback();
});
diff --git a/lib/internal/filter.js b/lib/internal/filter.js
index 4d5ceb8..8b1de9f 100644
--- a/lib/internal/filter.js
+++ b/lib/internal/filter.js
@@ -6,15 +6,25 @@ import property from 'lodash/_baseProperty';
export default function _filter(eachfn, arr, iterator, callback) {
var results = [];
eachfn(arr, function (x, index, callback) {
- iterator(x, function (v) {
- if (v) {
- results.push({index: index, value: x});
+ iterator(x, function (err, v) {
+ if (err) {
+ callback(err);
+ }
+ else {
+ if (v) {
+ results.push({index: index, value: x});
+ }
+ callback();
}
- callback();
});
- }, function () {
- callback(arrayMap(results.sort(function (a, b) {
- return a.index - b.index;
- }), property('value')));
+ }, function (err) {
+ if (err) {
+ callback(err);
+ }
+ else {
+ callback(null, arrayMap(results.sort(function (a, b) {
+ return a.index - b.index;
+ }), property('value')));
+ }
});
}
diff --git a/lib/internal/reject.js b/lib/internal/reject.js
index 8b1bf0d..708e810 100644
--- a/lib/internal/reject.js
+++ b/lib/internal/reject.js
@@ -4,8 +4,12 @@ import filter from './filter';
export default function reject(eachfn, arr, iterator, callback) {
filter(eachfn, arr, function(value, cb) {
- iterator(value, function(v) {
- cb(!v);
+ iterator(value, function(err, v) {
+ if (err) {
+ cb(err);
+ } else {
+ cb(null, !v);
+ }
});
}, callback);
}