Parallel Js
19 Jul 2020 - Alejandro Piña
Parallel
is a Node.js library to spread concurrent task or promises, with deggree concurrency
Install
$ npm install @ultranaco/parallel
How it works
The example code below invokes 10 “heavy workloads” and execute 3 tasks simultaneously, Parallel
doesn’t enqueue tasks to avoid memory leaks rather lock the main execution until one task is released and next task get into execution process.
import { Parallel } from '@ultranaco/parallel';
jest.setTimeout(9000);
let timeout = 2000;
test("Test 1: 3 tasks simultaneously over 10 invokes", async ()=> {
const parallel = new Parallel(3);
for (let i = 0; i < 9 ;i++) {
await parallel.exec(heavyWork, i);
}
await parallel.wait();
expect(parallel.tasks).toBe(0);
});
function heavyWork(index: Number): Promise<void>{
return new Promise((resolve)=>{
timeout = timeout - 100;
setTimeout(() => {
const date = new Date();
const min = date.getMinutes();
const sec = date.getSeconds();
const ms = date.getUTCMilliseconds();
const time = `${min}:${sec}-${ms}`;
console.log(`Index: ${index}, Time: ${time}`);
resolve();
}, timeout);
});
}
Contributing at GitHub