1.2.0 • Published 6 years ago

function-repeater v1.2.0

Weekly downloads
1
License
ISC
Repository
github
Last release
6 years ago

repeater

about

Repeater allows u to start, stop, and restart repeating invocations of your functions

let queryRepeater = new Repeater(doQuery, 100, true);
let queryRepeater = new Repeater(doQuery);
queryRepeater.setPeriod(100);
queryRepeater.start();

simple example

const Repeater = require('function-repeater');

let i = 0;
let add1 = () => i++;
let subtract3 = () => i -= 3;

let accumulation = [];
let accumulate = () => accumulation.push(i);

let repeaterA = new Repeater(add1, 300, true);
let repeaterB = new Repeater(add1, 900, true);
let repeaterC = new Repeater(subtract3, 1800, true);
let repeaterD = new Repeater(subtract3);
let accumulateRepeater = new Repeater(accumulate, 300, true);
setTimeout(() => {
    repeaterA.stop();
    repeaterB.stop();
    repeaterD.start(300);
    accumulate();
}, 2400);
setTimeout(() => {
    repeaterC.stop();
    repeaterD.stop();
    accumulateRepeater.stop();
    console.log(accumulation); // [-1, 0, 1, 3, 4, 5, 4, 5, 6, 3, 3, 0, -3]
}, 3100);

Output explained

-1 // +1 (A) +1 (B) -3 (C) @ 0ms
0 // +1 (A) @ 300ms
1 // +1 (A) @ 600ms
3 // +1 (A) +1 (B) @ 900ms
4 // +1 (A) @ 1200ms
5 // +1 (B) @ 1500ms
4 // +1 (A) +1 (B) -3 (C) @ 1800ms
5 // +1 (A) @ 2100ms
6 // +1 (A) @ 2400ms
// A & B stopped, D started @ 2400ms
3 // -3 (D) @ 2400ms
0 // -3 (D) @ 2700ms
-3 // -3 (D) @ 3000ms
// C & D stopped @ 3100ms

api

new Repeater(function handler, integer period, boolean start)

Creates a new repeater that will invoke handler every period milliseconds. If period is omitted, it will default to 0. If start is truthy, the repeater will automatically invoke it's start method (see below).

setHandler(function handler)

Sets the handler which will be invoked when the repeater is started. If the repeater is in progress, the new handler will not take affect until the repeater is stopped and restarted.

setPeriod(integer period)

Update's the repeaters period. If the repeater is in progress, the new period will not take affect until the repeater is stopped and restarted.

start(integer period)

Starts the repeater with the specified period or the current period. If the repeater is in progress, it is stopped and restarted.

stop()

Stops the repeater.

handler paramters

The handler is passed in two paramters, the repeater itself, and an incrementing index;

new Repeater(
    (repeater, i) => {
        console.log(i); // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
        if (i === 10)
            repeater.stop();
    }, 10, true);
1.2.0

6 years ago

1.1.0

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago