2.0.12 • Published 4 years ago

bjork_restrain v2.0.12

Weekly downloads
3
License
MIT
Repository
github
Last release
4 years ago

What is this?

An object, restrain, containing three restrictive Promise-based functions: debounce, throttle and iteration. Debounce and Throttle utilize setTimeout and clearTimeout too restrict rapid function execution.

Install

Use npm to install restrain.

> npm i bjork_restrain

Usage

In essence, throttle creates ripples of function executions, contrasting debounce which cancels them until left idle. Additionally, Iteration count and executes on every given number.

import restrain from 'bjork_restrain'
const { debounce, throttle, iteration } = restrain

debounce(func, delay, cancel)
throttle(func, delay, options?)
iteration(func, delay, options?)

//---------- or ----------\\

// (for example, debounce)

import Debounce from 'bjork_restrain/modules/Debounce'

const debounce = (new Debounce()).process

debounce(func, delay, cancel)

Debounce

Delay execution of func until idle for the duration of delay (ms).

Cancel In addition to func and delay a third param, cancel boolean, can be passed. Resulting in the debouncing function func never being executed.

Promise After a successful execution or cancelation, debounce resolves with a corresponding message.

Test

The testEnvironment simulates a static spamming situation. Here is the test intact.

// In testEnvironment: debounce(() => arr.push('execution'), 15)
test('unconfigured', async() => {
	expect(
		await testEnvironment()
	).toBe(
		'1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 execution'
	)
})

Throttle

Restrain execution of func to one every delay (ms).

Promise After successfully executing func, throttle resolves with a message.

Options In addition to func and delay a third param, options object, can be passed. options?: { cancel?: boolean; init?: boolean; idleResetDelay?: number; }

  • cancel boolean: Cancels current timeout, allowing param exchange of throttle.
  • init boolean: Toggles initial execution (@default true).
  • idleResetDelay (ms): Configure delay of state reset to idle (@defualt delay*1.5)

Test

The testEnvironment simulates a static spamming situation. Here is the test intact.

test('unconfigured', async() => {
	expect(
		await testEnvironment()
	).toBe(
		'1 execution 2 3 4 5 6 7 8 9 10 11 12 13 14 execution 15 16 17 18 19 20 21 22 23 24 25 26 27 28 execution 29 30'
	)
})

Iteration

Restrain execution of func to every delay:nth iteration.

Promise After successfully executing func, iteration resolves with a message.

Options In addition to func and delay a third param, options object, can be passed. options?: { cancel?: boolean; init?: boolean; startFrom?: number; idleResetDelay?: number; }

  • cancel boolean: Cancels current iteration count, effectivly reseting iteration.
  • init boolean: Toggles initial execution (@default true).
  • startFrom number: Configure initial starting iteration (@defualt 0)
  • idleResetDelay (ms): Configure delay of state reset to idle (@defualt 500)

Test

The testEnvironment simulates a static spamming situation. Here is the test intact.

test('unconfigured', async() => {
	expect(
		await testEnvironment()
	).toBe(
		'1 execution 2 3 4 5 execution 6 7 8 9 10 execution 11 12 13 14 15 execution 16 17 18 19 20 execution'
	)
})

Contribution

Pull requests are welcome. For any considerable changes, please open an issue first to discuss what you would like to change. Please make sure to update the tests as appropriate.

Licence

MIT

2.0.12

4 years ago

2.0.11

4 years ago

2.0.1

4 years ago

2.0.0

4 years ago

1.2.2

4 years ago

1.2.1

4 years ago

1.2.0

4 years ago

1.1.74

4 years ago

1.1.73

4 years ago

1.1.72

4 years ago

1.1.71

4 years ago

1.1.7

4 years ago

1.1.65

4 years ago

1.1.63

4 years ago

1.1.62

4 years ago

1.1.61

4 years ago

1.1.64

4 years ago

1.1.6

4 years ago

1.1.5

4 years ago

1.1.4

4 years ago

1.1.3

4 years ago

1.1.2

4 years ago

1.1.1

4 years ago