README
The right way to repeat a process
This module helps you to repeat a process again after it completely executed. You can specify a condition to stop the repetition immediately by giving a command repeat(false)
inside the repeat_function
. Also, there is an option to pass a callback that will be executed after the repetition is finished.
This is simple, easy to use, and clean code.
Installation
NPM
npm install vcmrefunc --save
Browser
// Bower
bower install vcmrefunc --save
Initialization
NPM
const vcmrefunc = require('vcmrefunc');
Browser
// Bower
<script src="bower_components/vcmrefunc/dist/vcmrefunc.min.js"></script>
Quickstart
vcmrefunc(delay, repeat_function, callback[optional]);
- Arguments
- number delay
- default 0 | miliseconds | 0 = means has no delay
- function repeat_function
- Has an argument
repeat
- function repeat [required]
- Has an argument
- function callback [optional]
- number delay
Here is the basic usage of vcmrefunc
:
vcmrefunc(0, (repeat) => {
// Your logic here...
repeat();
});
As you can see, the argument repeat
on the repeat_function
is used to repeat its process again until you decide to stop it. You can stop the repetition using repeat(false)
. For example:
var i = 0;
vcmrefunc(0, (repeat) => {
console.log('Repeated ' + i);
if (i == 4) return repeat(false);
i++;
repeat();
});
And you'll have output:
Repeated 0
Repeated 1
Repeated 2
Repeated 3
Repeated 4
Also, there is an option to pass a callback that will be executed after the repetition is finished. For example:
var i = 0;
vcmrefunc(0, (repeat) => {
console.log('Repeated ' + i);
if (i == 4) return repeat(false);
i++;
repeat();
}, () => {
console.log('End');
});
And the output will be:
Repeated 0
Repeated 1
Repeated 2
Repeated 3
Repeated 4
End
Delay
If the repeat_function
process would be repeated, the function will wait for a delay before it gets the process run again. Delay must be passed (in miliseconds) on first position of vcmrefunc
arguments. Zero (0) delay means has no delay. Example:
vcmrefunc(2000, (repeat) => {
console.log('Repeated after 2 seconds');
repeat();
});
Working with asynchronous functions
You can do like this if you want to run asynchronous functions inside repeat_function
:
var myFunction = function (callback) {
setTimeout(() => {
console.log('This is my asynchronous function');
callback();
}, 2000);
};
var i = 0;
vcmrefunc(2000, (repeat) => {
console.log('Repeated ' + i);
myFunction(() => {
if (i == 4) return repeat(false);
i++;
repeat();
});
}, () => {
console.log('end!');
});
Output:
Repeated 0
This is my asynchronous function
Repeated 1
This is my asynchronous function
Repeated 2
This is my asynchronous function
Repeated 3
This is my asynchronous function
Repeated 4
This is my asynchronous function
End
Release
Changelog
See https://github.com/dalikewara/vcmrefunc/blob/master/CHANGELOG.md.
Credits
Copyright © 2020 Dali Kewara.