Skip to content

A simple task runner which will run all tasks till completion, while maintaining concurrency limits.

License

Notifications You must be signed in to change notification settings

samrith-s/concurrent-tasks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Concurrent Tasks logo

Concurrent Tasks

A simple task runner which will run all tasks till completion, while maintaining concurrency limits.

Read the full documentation at the website


Introduction

Concurrent Tasks mimics a queue by using JavaScript's inbuilt array data type. Each task is a function which signals completion back to the runner.

The minimalism of Concurrent Tasks makes it an easy-to-use solution across any framework or flavour of JavaScript. It has ZERO dependencies and can be used virtually in any scenario. With a minified and gzipped size of 2.7kB, it is the ultimate lightweight tool for your concurrency needs.

  • Vanilla JavaScript
  • Frontend Frameworks (React, Vue, Angular, etc)
  • Backend Frameworks (Express, Hapi, Koa, etc)
  • NPM Module
  • Node CLI Application

Installation

Node

# NPM
npm i concurrent-tasks

# Yarn
yarn add concurrent-tasks

# PNPM
pnpm i concurrent-tasks

Browser

<script
  src="https://cdn.jsdelivr.net/npm/concurrent-tasks/umd/concurrent-tasks.min.js"
  type="text/javascript"
></script>

Bun

bun install concurrent-tasks

Deno

import { TaskRunner } from "https://cdn.jsdelivr.net/npm/concurrent-tasks/src/index.ts";

Usage

Important: Each task passed to the task runner, necessarily has to call the done function. If not, your queue won't process properly.

import TaskRunner from "concurrent-tasks";

const runner = new TaskRunner();

function generateTasks() {
  const tasks = [];
  let count = 1000;
  while (count) {
    tasks.push((done) => {
      setTimeout(() => {
        done();
      }, Math.random() * 1000);
    });
    count--;
  }
  return tasks;
}

runner.addMultiple(generateTasks());

runner.start();