Skip to content

Latest commit

 

History

History
30 lines (23 loc) · 1.23 KB

README.md

File metadata and controls

30 lines (23 loc) · 1.23 KB

Concurrency Master

The Concurrency Master is a lightweight promise-based task scheduler. Initialize it with a concurrency value, then call its add method on functions that return Promises. The ConcurrencyMaster will execute all the given promise-returning functions. In doing so, it will make sure that no more than its given concurrency are running in parallel.

The wait() method returns a Promise that resolves when all of the ConcurrencyMaster's added Promises have resolved.

Example

var ConcurrencyMaster = require('concurrency-master');

function waitOneSecondAndLog() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            console.log('Hey!');
            resolve();
        }, 1000);
    });    
}

var concurrencyMaster = new ConcurrencyMaster(2);
concurrencyMaster.add(waitOneSecondAndLog);
concurrencyMaster.add(waitOneSecondAndLog);
concurrencyMaster.add(waitOneSecondAndLog);
concurrencyMaster.wait().then(() => {
    console.log('all done!');
});

The ConcurrencyMaster in this example has a concurrency of 2, so after one second, you'll see two Hey! messages. After another second, you'll see the third Hey! message, then all done!. Sweet!