vcmrefunc: This is How To Repeat a Process Correctly

repeated Photo taken from Giphy

Check out vcmrefunc‘s latest documentation at https://github.com/dalikewara/vcmrefunc

 

npm package

version build language download dependents issue last_commit license

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]
    • function callback [optional]

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.

License

MIT License

By dalikewara

Written by Dali Kewara who lives and works as Backend Developer—building useful and unexpected things—in Indonesia. He also interested in art, writing and journey. His life motto is "Make it simple but Spectacular!"

Leave a comment

Your email address will not be published. Required fields are marked *