A promise based throttler capable of limiting execution of parallel tasks
A promise based throttler responsible for limiting execution of parallel tasks. The number of parallel tasks may be limited and configured per type.
$ npm install p-throttler
Constructs a new throttler.
defaultConcurrency is the default maximum concurrent functions being run (-1 to specify no limits).
types allows you to specify different concurrencies for different types.
var throttler = PThrottlercreate15 // or new PThrottler()'network_io': 10'disk_io': 50;
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.
type argument is optional and can be a
string or an array of
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 is passed or is unknown, the
defaultConcurrency is used.
The execution order is guaranteed for functions enqueued with the exact same
varreturn Qresolve'foo';;var throttler = PThrottlercreate15'foo': 1'bar': 2;// Single type, will only run when a free slot for// "foo" is availablethrottlerenqueuereturn method; // method() returns some promise'foo'thenconsole.logvalue;;// Multiple type, will only run when a free slot for// "foo" and "bar" are availablethrottlerenqueuereturn method; // method() returns some promise'foo' 'bar'thenconsole.logvalue;;
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.
Released under the MIT License.