Article @ js

vcmrefunc, This Is How To Repeat A Process Correctly

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


Article cover image

repeatedPhoto taken from Giphy

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

npm package

versionbuildlanguagedownloaddependentsissuelast_commitlicense

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
  • numberdelay
    • default 0 | miliseconds | 0 = means has no delay
  • functionrepeat_function
    • Has an argument repeat
    • functionrepeat [required]
  • functioncallback [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

Change logs.
  • Saturday 12:24 AM, July 25 2020 | "fixed tags mechanism"
  • Saturday 05:01 AM, July 18 2020 | "configure netlify cms & changed default frontmatter"
  • Friday 10:10 AM, July 17 2020 | "fixed badges background"
  • Friday 12:33 AM, July 17 2020 | "new theme 'rujak cingur' and some major changes"
Scroll to top