function-repeater
v1.2.0
Published
Repeater allows u to start, stop, and restart repeating invocations of your functions
Downloads
3
Readme
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);