Skip to content

bholloway/invocation-rate-compliance

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Invocation Rate Compliance

NPM

A throttle utility that ensures invocation complies to a limited rate

Usage

var invocationRateCompliance = require('invocation-rate-compliance');

var throttled = invocationRateCompliance({
  delay        : 100,
  before       : before,
  compliant    : compliant,
  antiCompliant: antiCompliant,
  after        : after
});

function before() {
  return 'invocation was';
}

function compliant(previous) {
  return previous + ' compliant';
}

function antiCompliant(previous) {
  return previous + ' anti-compliant';
}

function after(previous, x) {
  return previous + ' with argument ' + String(x);
}

throttled(5);                // invocation was compliant with argument 5
throttled('a');              // invocation was anti-compliant with argument a
setTimeout(throttled, 200);  // invocation was compliant with argument undefined

The utility is a factory for a method that may be invoked. The first invocation is always compliant and a chain of methods [before, compliant, after] is called. If the factoried method is invocated again before the given delay then invocation is anti-compliant and a chain of methods [before, antiCompliant, after] is called.

The delay is milliseconds measured from the last compliant invocation. Anti-compliant invocations do not change internal state.

At each stage in the method chain the value returned by the previous function is the first argument to the following function. Successive arguments will match those of the invocation. The first argument to the before method is always undefined.

About

A utility that ensures invocation of a function complies to a limited rate

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published