2.2.0 • Published 1 year ago

task-pool-executor v2.2.0

Weekly downloads
237
License
Apache-2.0
Repository
github
Last release
1 year ago

task-pool-executor

Quality Gate Status Known Vulnerabilities


Provides a simple and a cli progress executor implementations to orchestrate a set of asynchronous tasks

install it

  • npm
npm install task-pool-executor --save
  • yarn
yarn add task-pool-executor

use it

  • simple task executor
import { taskPoolExecutor } from "task-pool-executor";

const executor = taskPoolExecutor<string>({ maxConcurrent: 3 });
const task = {
  title: "my-task",
  run: () => Promise.resolve("done"),
};
executor.submit(task);

await executor.close();
  • with cli progress support
import {
  CliProgressRunContext,
  cliProgressTaskPoolExecutor,
} from "task-pool-executor";

const taskPool = cliProgressTaskPoolExecutor<string>();

const delayedTask = (millis: number, title: string) => {
  const run = (ctx?: CliProgressRunContext) =>
    new Promise<string>((resolve) => {
      const interval = setInterval(() => {
        ctx?.progress.increment();
      }, 8);
      const timeout = setTimeout(() => {
        clearInterval(interval);
        resolve("done");
      }, millis);
    });
  return { title, run };
};

const tasks = new Array(10)
  .fill(0)
  .map((_v, index) => delayedTask(2000, `task ${index}`));

const internal = async () => {
  tasks.forEach((t) => taskPool.submit(t));
  await delayedTask(8000, "running").run();
  await taskPool.close();
};

internal().then(console.info).catch(console.error);

cli progress example

2.2.0

1 year ago

2.1.0

1 year ago

2.0.1

1 year ago

2.0.0

1 year ago

1.1.0

2 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago

0.1.0

7 years ago