Promise.map
$ npm i -S promise.mapdeclare 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 = pmapvar p = pmap(
arr,
function (item, index, arr) {
return getOtherPromise(item)
},
concurrency,
)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[]>- bluebird is awesome, and provide tons of convience methods, such as Promise.map, it provides
async.parallelLimitbut, it got some opinioned ways, like this warn. So we'd better split things out. - package
promise-mapsimply useArray.prototype.map, that lost aconcurrencyorparallelLimitcontrol - earlier than p-map
the MIT License http://magicdawn.mit-license.org