Skip to content

Module for cycle throttling with sync and async methods. Has linear, random and manual delay.

License

Notifications You must be signed in to change notification settings

PragmaWolf/pragma-throttle

Repository files navigation

PragmaThrottle

Module for cycle throttling with sync and async methods. Has linear increase or decrease, random increase and manual increase delay.

Used and tested on

Navigation

Install

npm i --save pragma-throttle

Initialization

const Trottler = require('pragma-throttle');
const throttleDelays = {
    delay: 1000,
    delayDefault: 1000,
    delayStep: 100,
    delayMax: 10000
};
const Throttle = new Throttler(throttleDelays);

Options

Delay options:

{
    "delay": 1000,
    "delayDefault": 1000,
    "delayStep": 100,
    "delayMax": 10000
}

delay - number - The delay between the iterations of the throttled loop.

delayDefault - number - The default delay between the iterations of the throttled loop.

delayStep - number - Increase/decrease the delay at each iteration to the value.

delayMax - number - The maximum delay.

Throttled objects options:

{
    "obj": {},
    "execute": "Method",
    "args": []
}

obj - object| - The object that owns the method specified in execute.

execute - function|string - Object obj method name or a simple function.

args - array - Arguments for method or function specified in execute.

Methods

throttleSync(executeInfo[, delay])

executeInfo - null|Object - Object with throttled options.

delay - Number - Start delay time in ms.

Return FALSE if error on throttling initialize.

Start synchronous throttling. If execute synchronous, delay begin countdown after execute workflow is finished. If execute asynchronous, delay begin countdown after calling execute.

let throttleObj = {
    obj: Class,
    execute: 'SyncClassMethod'
};

Throttle.throttleSync(throttleObj, 1000);

throttleAsync(executeInfo[, delay])

executeInfo - null|Object - Object with throttled options.

delay - Number - Start delay time in ms.

Return FALSE if error on throttling initialize.

Start asynchronous throttling.

Delay begin countdown after execute workflow is finished.

let throttleObj = {
    obj: Class,
    execute: 'AsyncClassMethod'
};

Throttle.throttleAsync(throttleObj, 1000);

setExecute(executeInfo)

executeInfo - null|Object - Object with throttled options.

Return TRUE if execute specified, FALSE if not placed.

Check and specify execute and his args.

setExecuteArguments(...args)

args - array - Spread arguments list.

Return always TRUE

Update exists args for execute on throttling

delayReset()

Return always TRUE

Reset throttle delaying to default value. Put it into throttled function or method.

delayManual(delay)

delay - Number - Time in ms for increasing

Return always TRUE

Manually increase throttling delay. Ignore maximum delay value. Put it into throttled function or method.

delayIncrease()

Return always TRUE

Automatically increase delay using delayStep. It can not be increased more than delayMax. Put it into throttled function or method.

delayDecrease()

Return always TRUE

Automatically decrease delay using delayStep. It can not be decreased more than delayDefault. Put it into throttled function or method.

delayRandom()

Return always TRUE

Automatically random delay increase in the time between delayDefault and delayMax. Put it into throttled function or method.

stop()

Stop throttling and clear timeouts.

reset()

Stop throttling, clear timeouts and reset delay settings to defaults.

License

No WTFPL License image :(

About

Module for cycle throttling with sync and async methods. Has linear, random and manual delay.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published