mirror of
https://github.com/overleaf/overleaf.git
synced 2025-04-15 16:37:28 +00:00
Add promiseMapSettledWithLimit utility
GitOrigin-RevId: e34102de17f28e43deb383d630088c6e753e2ec1
This commit is contained in:
parent
ecc2f1f544
commit
d04bfbcdea
1 changed files with 17 additions and 0 deletions
|
@ -13,6 +13,7 @@ module.exports = {
|
|||
expressify,
|
||||
expressifyErrorHandler,
|
||||
promiseMapWithLimit,
|
||||
promiseMapSettledWithLimit,
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -264,3 +265,19 @@ async function promiseMapWithLimit(concurrency, array, fn) {
|
|||
const limit = pLimit(concurrency)
|
||||
return await Promise.all(array.map(x => limit(() => fn(x))))
|
||||
}
|
||||
|
||||
/**
|
||||
* Map values in `array` with the async function `fn`
|
||||
*
|
||||
* Limit the number of unresolved promises to `concurrency`.
|
||||
*
|
||||
* @template T, U
|
||||
* @param {number} concurrency
|
||||
* @param {Array<T>} array
|
||||
* @param {(T) => Promise<U>} fn
|
||||
* @return {Promise<Array<PromiseSettledResult<U>>>}
|
||||
*/
|
||||
function promiseMapSettledWithLimit(concurrency, array, fn) {
|
||||
const limit = pLimit(concurrency)
|
||||
return Promise.allSettled(array.map(x => limit(() => fn(x))))
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue