async-each-series-throttle

1.0.0 • Public • Published

async-each-series-throttle Build Status dependencies Status

Iterate through items in series but throttle iteratee execution

Usage

import eachSeriesThrottle from 'async-each-series-throttle'

const items = [0, 1, 2, 3, 4]

// Number in ms to throttle calls to iteratee
const wait = 1000

// Called only once every ~1000ms at minimum
const iteratee = (item, cb) => {
  // Do some async work and callback when done
  //
  // If this takes _more than_ 1000ms then iteratee will be called again
  // immediately after cb is called.
  //
  // If this takes _less than_ 1000ms then iteratee will be called again after
  // ~1000ms have elapsed since the last time it was called.
  setTimeout(() => cb(null, item + 1), 500)
}

// Optional callback after everything is done
const callback = (err, results) => {
  // All done, after ~4000ms or more
  // results is [1, 2, 3, 4, 5]
}

eachSeriesThrottle(items, iteratee, wait, callback)

Package Sidebar

Install

npm i async-each-series-throttle

Weekly Downloads

0

Version

1.0.0

License

MIT

Last publish

Collaborators

  • alanshaw