2.0.1 ⢠Published 8 years ago
array-async-filter v2.0.1
array-async-filter
Filter an array using async filter callback.
Example
example/filter.js:
var asyncFilter = require('..');
asyncFilter(
['abc', 'bcd', 'cde', 'def'],
function (val, i, arr, next) {
process.nextTick(function () {
next(null, val.indexOf('cd') !== -1);
});
},
function (err, res) {
console.log('async callback:', err, res);
}
);
asyncFilter(
['abc', 'bcd', 'cde', 'def'],
function (val) {
return new Promise(function (rs) {
setTimeout(function() {
rs(val.indexOf('cd') !== -1);
}, 10);
});
},
function (err, res) {
console.log('promise callback:', err, res);
}
);
asyncFilter(
['abc', 'bcd', 'cde', 'def'],
function (val) {
return val.indexOf('cd') !== -1;
},
function (err, res) {
console.log('sync callback:', err, res);
}
);output:
ā node example/filter.js
sync callback: null [ 'bcd', 'cde' ]
async callback: null [ 'bcd', 'cde' ]
promise callback: null [ 'bcd', 'cde' ]asyncFilter(arr, fn, done)
Filter arr using fn,
and the results can be accessed by the callback done.
arr
Type: Array
The array to be filtered.
fn
Type: Function
The filter function.
It can be synchronous,
with signature fn(val, index, arr).
If the returned value is truthy,
val will be kept in the final results.
fn can be made asynchronous if it does one of the following.
Accept a callback as the 4th argument
asyncFilter(
['abc', 'bcd', 'cde', 'def'],
function (val, i, arr, next) {
process.nextTick(function () {
next(null, val.indexOf('cd') !== -1);
});
},
function (err, res) {
console.log('async callback:', err, res);
}
);Return a promise
asyncFilter(
['abc', 'bcd', 'cde', 'def'],
function (val) {
return new Promise(function (rs) {
setTimeout(function() {
rs(val.indexOf('cd') !== -1);
}, 10);
});
},
function (err, res) {
console.log('promise callback:', err, res);
}
);done
Type: Function
Signature: done(err, results)
Called when all elements are checked.
If an error is thrown when executing fn,
or the next callback is passed a truthy value as the first argument,
or the returned promise rejects,
done will be called immediately,
and filtering finishes.