UNPKG

@monstermann/fn

Version:

A utility library for TypeScript.

30 lines 828 B
//#region src/promise/limit.d.ts interface Limited<T extends unknown[], U> { (...args: T): Promise<Awaited<U>>; idle: () => Promise<void>; } type LimitOptions = number | { concurrency: number; }; /** * `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 */ declare function limit<T extends unknown[], U>(fn: (...args: T) => U, options: LimitOptions): Limited<T, U>; //#endregion export { Limited, limit };