Home

Awesome

paramap-it

Build Status dependencies Status JavaScript Style Guide

Parallel mapping for async iterators

You have an async transform you need to apply to the values you get from an iterable, but want to apply these transforms in parallel and retain the original ordering.

Install

npm i paramap-it

Usage

const paramap = require('paramap-it')
const pause = ms => new Promise(resolve => setTimeout(resolve, ms))

const source = [1, 2, 3, 4, 5] // Can be ANY iterable or async iterable

// Asynchronously double the values from the source iterable IN PARALLEL
const doubler = paramap(source, async value => {
  await pause(Math.random())
  return value * 2
})

for await (const value of doubler) {
  console.log(value)
}

// Logs:
// 2
// 4
// 6
// 8
// 10
// Note: order is retained

API

const paramap = require('paramap-it')

paramap(source, mapper, [options])

Returns a new async iterable that can be used to consume the source iterable, applying the async mapper function to each item.

Contribute

Feel free to dive in! Open an issue or submit PRs.

License

MIT © Alan Shaw