shitty-loops

1.0.0 • Public • Published

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

Readme

Keywords

none

Package Sidebar

Install

npm i shitty-loops

Weekly Downloads

1

Version

1.0.0

License

ISC

Unpacked Size

5.36 kB

Total Files

7

Last publish

Collaborators

  • r3volved