2.1.0 • Published 5 years ago

parallel-generator v2.1.0

Weekly downloads
1
License
MIT
Repository
-
Last release
5 years ago

parallel-generator

Build Status

Small library like js Promise.all(), but for diferrent objects: generators, async generators, synchronous and asynchronous functions.

Install

$ npm i parallel-generator

Usage

const { all, call } = require('parallel-generator')

const syncFn = (message, count) => message.repeat(count)
const syncGenerator = function * (...args) {
  for (const arg of args) {
    yield arg
  }
}
const asyncFn = (message) => {
  return new Promise(resolve => setTimeout(() => resolve(message), 10))
}
const asyncError = (message) => {
  return new Promise((resolve, reject) => setTimeout(() => reject(new Error(message)), 10))
}
const tasks = [
  call(syncFn, 'One', 1),
  call(syncGenerator, 'Two', 'Three'),
  call(asyncFn, 'Five'),
  call(syncFn, 'Four', 2),
  call(asyncError, 'Six')
]

async function main () {
  for await (const response of all(tasks)) {
    if (response instanceof Error) {
      console.error(`Catched error: ${response.message}`)
    } else {
      console.log(response)
    }
  }
}

main().catch(console.error)

Console output:

One
TwoTwo
Catched error: Three

call (fn, ...args)

ParamTypeDescription
fn{Function}*Function
args{Array}List of arguments

all (calls = [])

ParamTypeDescription
calls{Array}List of calls. Use function call() to create it
2.1.0

5 years ago

2.0.0

5 years ago

1.0.1

5 years ago