JSFiddle - React, Tailwind, and code Playground

by icodeforlove

HTML

<script src="https://rawgit.com/icodeforlove/task.js/master/dist/client/task.min.js"></script>
<input id="add" type="button" value="add worker" />
<input id="fps" type="text" disabled />

JavaScript

var FPS = {
  startTime: 0,
  frameNumber : 0,
  getFPS : function(){
    this.frameNumber++;
    var d = new Date().getTime(),
      currentTime = ( d - this.startTime ) / 1000,
      result = ( ( this.frameNumber / currentTime ).toFixed(2) );

    if( currentTime > 1 ){
      this.startTime = new Date().getTime();
      this.frameNumber = 1;
    }
    return result;
  }
};

var fpsInput = document.querySelector('#fps'),
		addButton = document.querySelector('#add'),
    workers = 1,
    run = 0;

function fibonacci (n) {
  function fib(n) {
    return n < 2 ? 1 : fib(n - 1) + fib(n - 2);
  }
	
  return fib(n);
}
var fibonacciAsync = task.wrap(fibonacci);

addButton.addEventListener('click', function () {
	task.terminate();
  for (var i = 0; i < workers; i++) {
  	loop();
  }
  workers++;
});


/*var task2 = task.defaults({
maxWorkers: 1
});
*/



function loop () {
	run++;
  fibonacciAsync(run).then(function () {
  	fpsInput.value = run;
    loop();
  }, function (error) {});
}

/*loop();
loop();
loop();*/
/*
loop();
loop();
loop();
loop();
loop();
loop();
*/