promise.map
TypeScript icon, indicating that this package has built-in type declarations

0.5.0 • Public • Published

promise.map

Promise.map

Build Status Coverage Status npm version npm downloads npm license

Install

$ npm i -S promise.map

API

pmap

declare function pmap<IN, OUT>(
  arr: IN[],
  fn: (item: IN, index: number, arr: IN[]) => Promise<OUT> | OUT,
  concurrency: number
): Promise<OUT[]>

declare namespace pmap {
  export function pmapWorker<IN, OUT, AnyWorker extends Object>(
    arr: IN[],
    fn: (item: IN, index: number, arr: IN[], worker: AnyWorker) => Promise<OUT>,
    workers: AnyWorker[]
  ): Promise<OUT[]>
}

export = pmap
var p = pmap(
  arr,
  function (item, index, arr) {
    return getOtherPromise(item)
  },
  concurrency
)

map on Workers: pmapWorker

for cpu heavy work, you can map on workers (WebWorker / Node.js worker_threads)

export function pmapWorker<IN, OUT, AnyWorker extends Object>(
  arr: IN[],
  fn: (item: IN, index: number, arr: IN[], worker: AnyWorker) => Promise<OUT>,
  workers: AnyWorker[]
): Promise<OUT[]>

Why

  • bluebird is awesome, and provide tons of convience methods, such as Promise.map, it provides async.parallelLimit but, it got some opinioned ways, like this warn. So we'd better split things out.
  • package promise-map simply use Array.prototype.map, that lost a concurrency or parallelLimit control
  • earlier than p-map

See Also

Changelog

CHANGELOG.md

License

the MIT License http://magicdawn.mit-license.org

Readme

Keywords

Package Sidebar

Install

npm i promise.map

Weekly Downloads

1,032

Version

0.5.0

License

MIT

Unpacked Size

8.61 kB

Total Files

7

Last publish

Collaborators

  • magicdawn