asyncforeach
v1.0.0-beta.13 async asynchronous foreach for each lightweight light weight async control flow control flow and 4 more...
asyncforeach
Lightweight async Array-forEach-method.
Description
In a microservice world, you want to fire requests in parallel and act on all of their returns. This can be done very barebones with this tiny module.
For better support and lifetime handling, as well as a better API go to Steed.
Example
const arr = []
arr.push(function one (task, index, array, cb) {
process.nextTick(() => {
return cb(null, {'one': 'one'})
})
})
arr.push(function two (task, index, array, cb) {
console.log('calling two')
setTimeout(function () {
return cb(null, {'two': 'two'})
}, 1000)
})
asyncForEach(arr, (err, res) => {
console.log(err) // null
console.log(res) // [ {'one': 'one'}, {'two': 'two'} ]
// order is guaranteed
})
or with an error:
const arr = []
arr.push(function one (task, index, array, cb) {
process.nextTick(() => {
return cb(new Error('Simple Error'), {'one': 'one'})
})
})
arr.push(function two (task, index, array, cb) {
console.log('calling two')
setTimeout(function () {
return cb(new Error(), {'two': 'two'})
}, 1000)
})
asyncForEach(arr, (err, res) => {
console.log(err) // err instanceof Error -> true
console.log(res) // undefined
})
Prior Art
countless
aysnc
Promise
(WIP)
License
MIT