JSFiddle - React, Tailwind, and code Playground
JavaScript
function Looper() {
this.loops = {};
this.start = function(name, fn, interval, params) {
this.loops[name] = setInterval(function() {
fn.apply(null, params); // maybe bind the function?
}, interval);
};
this.stop = function(name) {
clearInterval(this.loops[name]);
};
}
function say(name, msg) {
console.log(name,':',msg);
}
function shout(name, msg) {
console.log(name,':',msg.toUpperCase());
}
var looper = new Looper();
looper.start('say', say, 1000, ['clock', 'tick']);
looper.start('shout', shout, 2000, ['clock', 'tack']);
setTimeout(function() {
looper.stop('shout');
}, 5000);