JSFiddle - React, Tailwind, and code Playground

by Barry Peterson

JavaScript

class Requestor {
	constructor(frequency) {
  	this.requestQ = [];
    this.lastRequestTime = Date.now();
    this.frequency = frequency;
    this.requestObserver();
  }
  
  get(request) {
  	this.requestQ.push(request);
  }
  
  handleRequest() {
	  if (this.requestQ.length) {
    	$.get(this.requestQ[0])
      	.done(data => {
        	console.log(data);
          this.requestQ.shift();
        })
        .fail(err => console.log(err))
    }
  }
  
  requestObserver() {
  	const currentTime = Date.now();
    if (this.lastRequestTime + this.frequency < currentTime) {
    	this.handleRequest();
      this.lastRequestTime = currentTime;
    }
    
    setTimeout(() => {
    	this.requestObserver();
    }, 200);
  }
}

const getStuff = new Requestor(5000);

for (i = 0; i < 100; i++) {
	getStuff.get('https://www.reddit.com/r/vandwellers/.json')
  	getStuff.get('https://www.reddit.com/r/itap/.json')
}