@node-libraries/promise-limit
TypeScript icon, indicating that this package has built-in type declarations

1.0.4 • Public • Published

@node-libraries/promise-limit

Limits the maximum number of asynchronous processes that can be executed.
The number of executions is controlled at the loop stage, so no memory is wasted in the queue.

usage

  • promiseLimit() to create an instance
  • add() to store Promise
  • wait() waits for a specified maximum number
  • all() waits for remaining processes
import { promiseLimit } from '@node-libraries/promise-limit';
const main = async () => {
  const ps = promiseLimit();
  for (let i = 0; i < 10; i++) {
    // Execute a random exit process and save the Promise
    ps.add(new Promise((resolve) => setTimeout(() => resolve(i), Math.random() * 100)));
    // Specify the maximum number of parallel execution and wait
    // Return value false: the process has not finished within the limit
    // Return index of the process returned by resolve
    const v = await ps.wait(5);
    console.log(`${i}:${v}`); // Number of loops: display the finished function
  }
  // wait for remaining processing if the loop exits with less than 5 in parallel
  (await ps.all()).forEach((v) => console.log(`*:${v}`));
};

main();

Execution result

0:false
1:false
2:false
3:false
4:3
5:1
6:2
7:4
8:0
9:6
*:5
*:7
*:8
*:9

Package Sidebar

Install

npm i @node-libraries/promise-limit

Weekly Downloads

483

Version

1.0.4

License

MIT

Unpacked Size

5.85 kB

Total Files

9

Last publish

Collaborators

  • sora_kumo