JSFiddle - React, Tailwind, and code Playground

by moritzkobrna

JavaScript

function timer(end = 100) {
	var onEnd = function() {};
  var onCount = function() {};
	var interval = null;
	var count = 0;

	var registerOnEnd = function(cb) {
    onEnd = cb;
    return {
    	onCount: registerOnCount,
    };
  };
  
  var registerOnCount = function(cb) {
    onCount = cb;
    return {
    	onEnd: registerOnEnd,
    };
  };
  
 	interval = setInterval(function() {
  	count = count + 1;
    onCount(count);
    if (count >= end) {
    	onEnd(count);
      clearInterval(interval);
    }
  }, 10);


	return {
  	onEnd: registerOnEnd,
  	onCount: registerOnCount,
  };
}


timer(10)
  .onCount(function(count) { console.log('ON COUNT', count)})
	.onEnd(function() { console.log('END') });