0.1.1 • Published 8 years ago

concurrency-master v0.1.1

Weekly downloads
1
License
ISC
Repository
-
Last release
8 years ago

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!