A tiny (139B to 204B) utility to regulate the execution rate of your functions
npm install throttles> A tiny (139B to 204B) utility to regulate the execution rate of your functions
```
$ npm install --save throttles
There are two "versions" of throttles, each of which different purpose:
#### "single"
> Size (gzip): 139 bytes
> Availability: UMD, CommonJS, ES Module
This is the primary/default mode, meant for managing single queues.
#### "priority"
> Size (gzip): 204 bytes
> Availability: UMD, ES Module
This is the opt-in mode, meant for managing a low priority _and_ a high priority queue system.
Items within the "high priority" queue are handled before the low/general queue. The limit is still enforced.
Selecting a Mode
`js
// import via npm module
import throttles from 'throttles';
import throttles from 'throttles/priority';
// import via unpkg
import throttles from 'https://unpkg.com/throttles/index.mjs';
import throttles from 'https://unpkg.com/throttles/priority/index.mjs';
`
Example Usage
`js
import throttles from 'throttles';
const API = 'https://pokeapi.co/api/v2/pokemon';
const getPokemon = id => fetch(${API}/${id}).then(r => r.json());
// Limit concurrency to 3
const [toAdd, isDone] = throttles(3);
// What we'll fetch
const pokemon = ['bulbasaur', 'ivysaur', 'venusaur', 'charmander', 'charmeleon', 'charizard', ...];
// Loop list, enqueuing each Pokemon
// ~> Always keeps 3 requests active at a time
// ~> When complete, marks itself complete via isDone()
pokemon.forEach(name => {
toAdd(() => {
getPokemon(name).then(isDone);
});
});
// Or, use Array.map to wrap our getPokemon function`
// ~> This still fetches Pokemon 3 at once
pokemon.map(x => () => getPokemon(x).then(isDone)).forEach(toAdd);
Returns a tuple of [
toAdd, isDone] actions.#### limit
Type:
Number
Default: 1The throttle's concurrency limit. By default, runs your functions one at a time.
$3
Type: Function
Returns: voidAdd a function to the throttle's queue.
> Important: In "priority" mode, identical functions are ignored.
#### fn
Type:
Function
The function to add to the queue.#### isHigh
Type:
Boolean
Default: false
If the fn should be added to the "high priority" queue.> Important: Only available in "priority" mode!
$3
Type: Function
Returns: voidSignifies that a function has been completed.
> Important: Failure to call this will prevent
throttles` from continuing to the next item!MIT © Luke Edwards