Skip to content

rvedotrc/node-fixed-size-executor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fixed-size-executor

Submit async jobs to an executor, but limit how many can run concurrently

Synopsis

var FixedSizeExecutor = require('fixed-size-executor');

// Create an executor, specify the maximum concurrency
executor = new FixedSizeExecutor(2);

// A simple "job" function which takes a little time to run
var t0 = new Date().getTime() - 10000;
var slowGreeter = function (nextJob, arg1, arg2) {
    console.log("", new Date().getTime()-t0, "Hello", arg1, "...");
    setTimeout(function () {
        console.log("", new Date().getTime()-t0, "... Hello", arg1, arg2);
        nextJob();
    }, 2000 * Math.random());
};

// Submit jobs to the executor (function to call, plus 0..n args to pass)
// Here we happen to use the same function every time
executor.submit(slowGreeter, "One", "1");
executor.submit(slowGreeter, "Two", "2");
executor.submit(slowGreeter, "Three", "3");
executor.submit(slowGreeter, "Four", "4");

setTimeout(function () {
        executor.submit(slowGreeter, "Five", "5");
}, 5000);

An executor can also be stringified - toString() shows information about the state of the executor.

About

Submit async jobs to an executor, but limit how many can run concurrently

Resources

License

Stars

Watchers

Forks

Packages

No packages published