UNPKG

p-all-limit

Version:

```ts import { promiseAllLimit } from 'p-all-limit'

1 lines 1.47 kB
{"version":3,"sources":["../p-all-limit.ts"],"sourcesContent":["export const promiseAllLimit = <T>(\n array: any[],\n iterator: (item: any) => Promise<T>,\n limit: number\n): Promise<T[]> => {\n let inFlight = 0\n\n return new Promise((resolve, reject) => {\n let results = [] as T[]\n let itemIndex = -1\n const next = () => {\n\n\n if (array.length === 0 && inFlight === 0) {\n return resolve(results)\n }\n\n while (inFlight < limit && array.length > 0) {\n inFlight++\n const nextItem = array.shift() as T\n itemIndex += 1\n const currentIndexForThisClosure = itemIndex\n iterator(nextItem)\n .then((singleResult) => {\n results[currentIndexForThisClosure] = singleResult\n inFlight--\n next()\n })\n .catch((error) => {\n reject(error)\n })\n }\n }\n\n next()\n })\n}\n"],"mappings":";AAAO,IAAM,kBAAkB,CAC7B,OACA,UACA,UACiB;AACjB,MAAI,WAAW;AAEf,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,QAAI,UAAU,CAAC;AACf,QAAI,YAAY;AAChB,UAAM,OAAO,MAAM;AAGjB,UAAI,MAAM,WAAW,KAAK,aAAa,GAAG;AACxC,eAAO,QAAQ,OAAO;AAAA,MACxB;AAEA,aAAO,WAAW,SAAS,MAAM,SAAS,GAAG;AAC3C;AACA,cAAM,WAAW,MAAM,MAAM;AAC7B,qBAAa;AACb,cAAM,6BAA6B;AACnC,iBAAS,QAAQ,EACd,KAAK,CAAC,iBAAiB;AACtB,kBAAQ,8BAA8B;AACtC;AACA,eAAK;AAAA,QACP,CAAC,EACA,MAAM,CAAC,UAAU;AAChB,iBAAO,KAAK;AAAA,QACd,CAAC;AAAA,MACL;AAAA,IACF;AAEA,SAAK;AAAA,EACP,CAAC;AACH;","names":[]}