UNPKG

@monstermann/fn

Version:

A utility library for TypeScript.

33 lines (31 loc) 735 B
import { queue } from "./queue.js"; //#region src/promise/limit.ts /** * `limit(fn, options)` * * Limits the concurrency of function execution. * * ```ts * const limitedFetch = limit(fetch, { concurrency: 3 }); * const limitedFetch2 = limit(fetch, 3); // Shorthand * * const results = await Promise.all([ * // At most 3 fetch calls are executed at any time * limitedFetch("/api/1"), * limitedFetch("/api/2"), * limitedFetch("/api/3"), * limitedFetch("/api/4"), * ]); * * // Wait for queue to become idle */ function limit(fn, options) { const q = queue(options); const limited = function(...args) { return q.add(() => fn(...args)); }; limited.idle = q.idle; return limited; } //#endregion export { limit };