Adam Rensel b05888e79d Add the correct demo app 9 years ago
..
lib 0ad841a423 init commit 9 years ago
node_modules b05888e79d Add the correct demo app 9 years ago
test 0ad841a423 init commit 9 years ago
.editorconfig 0ad841a423 init commit 9 years ago
.jshintrc 0ad841a423 init commit 9 years ago
.npmignore 0ad841a423 init commit 9 years ago
.travis.yml 0ad841a423 init commit 9 years ago
LICENSE 0ad841a423 init commit 9 years ago
README.md 0ad841a423 init commit 9 years ago
index.js 0ad841a423 init commit 9 years ago
package.json b05888e79d Add the correct demo app 9 years ago

README.md

p-throttler Build Status

A promise based throttler responsible for limiting execution of parallel tasks. The number of parallel tasks may be limited and configured per type.

Installation

$ npm install p-throttler

API

#create(defaultConcurrency, types)

Constructs a new throttler.

The defaultConcurrency is the default maximum concurrent functions being run (-1 to specify no limits).
The types allows you to specify different concurrencies for different types.

Example:

var throttler = PThrottler.create(15, {  // or new PThrottler()
    'network_io': 10,
    'disk_io': 50
});

.enqueue(func, [type]): Promise

Enqueues a function to be ran. The function is expected to return a promise or a value.
The returned promise is resolved when the function finishes execution.

The type argument is optional and can be a string or an array of strings.
Use it to specify the type(s) associated with the function.

The function will run as soon as a free slot is available for every type.
If no type is passed or is unknown, the defaultConcurrency is used.

The execution order is guaranteed for functions enqueued with the exact same type argument.

Example:


var method = function () {
    return Q.resolve('foo');
};

var throttler = PThrottler.create(15, {
    'foo': 1,
    'bar': 2
});

// Single type, will only run when a free slot for
// "foo" is available
throttler.enqueue(function () {
    return method();    // method() returns some promise
}, 'foo')
.then(function (value) {
    console.log(value);
});

// Multiple type, will only run when a free slot for
// "foo" and "bar" are available
throttler.enqueue(function () {
    return method();    // method() returns some promise
}, ['foo', 'bar'])
.then(function (value) {
    console.log(value);
});

.abort(): Promise

Aborts all current work being done. Returns a promise that is resolved when the current running functions finish to execute.
Any function that was in the queue waiting to be ran is removed immediately.

License

Released under the MIT License.