1.0.9 • Published 4 years ago

async-looper v1.0.9

Weekly downloads
2
License
ISC
Repository
github
Last release
4 years ago

async-looper

NPM version NPM downloads Build Status

Fast, flexible and simple function that loops through each array or object element to execute asynchronous code.

Usage

This function expect four parameters: 1. Element to loop through 2. Function to execute each time 3. Function to execute when loop finish. 4. Number of times needed to execute nextTick

const loop = require('async-looper')

let counter = 0
let array = [1, 2, 3, 4, 5]

loop(array, (item, next) => {
  // First time
  // item = 1
  counter++
  next()
}, errors => {
  expect(counter).to.be.equals(array.length)
  done()
})

It can loop over objects.

const loop = require('async-looper')

let object = {a: 1, b: 2, c: 3, d: 4}
let newValueToA = 100;

loop(object, (item, next) => {
  // First time
  // item = {
  //  value: 1,
  //  key: 'a'
  // }
  if (item.key === 'a') {
    object[item.key] = newValueToA
  }
  next()
}, errors => {
  expect(object.a).to.be.equal(newValue)
  done()
})

If you need you can stop the loop just passing a second param to the next function.

const loop = require('async-looper')
const END_LOOP = loop.END_LOOP

const limit = 5
let counter = 0
let array = [1, 2, 3, 4, 5, 6]

loop(array, (item, next) => {
  counter++
  if (counter === limit) {
    next(null, END_LOOP)
  } else {
    next()
  }
}, errors => {
  expect(counter).to.be.equal(limit)
  done()
})

The finish callback has an array of errors or it's null

const loop = require('async-looper')

let array = [1, 2, 3, 4, 5, 6]

loop(array, (item, next) => {
  next(new Error())
}, errors => {
  expect(errors).to.have.lengthOf(array.length)
  done()
})

TODO

  1. Improve the documentation.
  2. Benchmarks.
  3. Should we have the key value while loop through an array?
1.0.9

4 years ago

1.0.8

7 years ago

1.0.7

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago