0.1.0 • Published 6 years ago

a-throttler v0.1.0

Weekly downloads
4
License
-
Repository
-
Last release
6 years ago

Throttler

A package for throttling an array of actions (functions). This library was created to help prevent locking the browser with intensive JavaScript calls when web workers are not available.

Dependencies

Very few:

  • ES6 Array.isArray
  • ES6 Array#filter
  • ES6 Array#includes

Installation

npm install --save throttler

Usage

const Throttler = require("throttler");
const throttler = new Throttler([function() {
  return true;
}, function() {
  return {};
}]);

throttler.execute().then(results => {
  // result = [true, {}]
}).catch(...);

Versioning

This project uses SEMVER versioning scheme:

X    .  Y        . Z
^       ^        ^
release feature  bug

Reasoning

Most throttling libraries work at the very low level on Node (throttling streams) or with browser rendering (next animation frame, UI frameworks), but I could not find a library for simply throttling sequences of functions to prevent blocking the browser. This is only intended to be used where WebWorkers are not available. If WebWorkers can be used, they should be. This is not designed to be a replacement.

API

Throttler

Allows execution of an array of functions in a way that does not block the execution context

Kind: global class

new Throttler(actions)

A class for throttling actions. This can prevent locking the browser

ParamType
actionsArray.<function()>

throttler.addActions(actions)

Kind: instance method of Throttler

ParamType
actionsArray.<function()>

throttler.removeAction(actions)

Removes the provided function(s) from the actions array

Kind: instance method of Throttler

ParamType
actionsfunction | Array.<function()>

throttler.execute() ⇒ Promise

Executes the queued actions in a throttled fashion

Kind: instance method of Throttler
Returns: Promise - A promise that resolves when all of the actions are complete. The resolved value is an array of values returned by each action