promised-loops
Non blocking asyncronous loops that work with objects or arrays
npm i promised-loops
For
promised mimic of '.forEach(callback)'
await forEach( iterable, async callback( item, index ) )
const { forEach } = require('promised-loops')
const array = [ 1, 2, 3, 4, 5 ]
await forEach( array, async ( item, index ) => {
//Pause for async promise example
await new Promise(end => setTimeout(end, 1000))
console.log(`item : ${item} @ index : ${index}`)
})
//=> item : 1 @ index : 0
//=> item : 2 @ index : 1
//=> item : 3 @ index : 2
//=> item : 4 @ index : 3
//=> item : 5 @ index : 4
const object = { one:1, two:2, three:3, four:4, five:5 }
await forEach( object, async ( item, index ) => {
//Pause for async promise example
await new Promise(end => setTimeout(end, 1000))
console.log(`item : ${item} @ key : ${index}`)
})
//=> item : 1 @ key : one
//=> item : 2 @ key : two
//=> item : 3 @ key : three
//=> item : 4 @ key : four
//=> item : 5 @ key : five
Map
promised mimic of '.map(callback)'
await mapEach( iterable, async callback( item, index ) )
const { mapEach } = require('promised-loops')
var result = null
const array = [ 1, 2, 3, 4, 5 ]
result = await mapEach( array, async ( item, index ) => {
return item + index
})
console.log( result )
//=> [ 1, 3, 5, 7, 9 ]
const object = { one:1, two:2, three:3, four:4, five:5 }
result = await mapEach( object, async ( item, index ) => {
return item + index
})
console.log( result )
//=> [ '1one', '2two', '3three', '4four', '5five' ]
Reduce
promised mimic of '.reduce(callback, initializer)'
await reduceEach( iterable, async callback( accumulator, item, index ), initializer )
const { reduceEach } = require('promised-loops')
var result = null
const array = [ 1, 2, 3, 4, 5 ]
result = await reduceEach( array, async ( accumulator, item, index ) => {
accumulator[item] = key
return accumulator
}, {})
console.log( result )
//=> { '1':0, '2':1, '3':2, '4':3, '5':4 }
const object = { one:1, two:2, three:3, four:4, five:5 }
result = await reduceEach( object, async ( accumulator, item, index ) => {
accumulator[item] = key
return accumulator
}, {})
console.log( result )
//=> { '1':'one', '2':'two', '3':'three', '4':'four', '5':'five' }
Sum
promised mimic of '.sum()'
await sumEach( iterable [,field] )
const { sumEach } = require('promised-loops')
var result = null
const array = [ 1, 2, 3, 4, 5 ]
result = await sumEach( array )
console.log( result )
//=> 15
const object = { one:1, two:2, three:3, four:4, five:5 }
result = await sumEach( object )
console.log( result )
//=> 15
const complex = [{v:10},{v:20},{v:30},{v:40},{v:50}]
result = await sumEach( complex, 'v' )
console.log( result )
//=> 150