JSFiddle - React, Tailwind, and code Playground

by kontrach

JavaScript

var request = (function(){
    
	var firstTimeCall = new Date().getTime();
	var called;
    var args = [];
    var timer;
    
	return function(){
        
		var currentTimeCall = new Date().getTime();
        var differentBetweenCalls = currentTimeCall - firstTimeCall;
        var i;
		console.log('delta is: ' + (differentBetweenCalls));
        
        if(arguments.length !== 0) {
            for(i = 0; i < arguments.length; i++) {
                args.push(arguments[i]);
            }
        }
        
        if(called) {
            return;
        } else {
            called = true;
            timer = setTimeout( function(){
                console.log(args);
                called = false;
                firstTimeCall = new Date().getTime();
                args = [];
            }, (300 - differentBetweenCalls) );
        }
	  }
}());

setTimeout(request, 50);
setTimeout(function () {
	request(function a () {
		console.log('this is a function');
	});
}, 150);
setTimeout(function () {
	request(true, [1, 2, 3]);
}, 200);
setTimeout(function () {
	request({
		prop1 : 'smth',
		prop2 : 'light'
	});
}, 250);
setTimeout(function () {
	request('Get me now!');
}, 400);
setTimeout(function () {
	request(['long', 'looooong', 'array']);
}, 510);
setTimeout(function () {
	request('last string');
}, 620);