JSFiddle - React, Tailwind, and code Playground

by Vikram Deshmukh

JavaScript

// Implement an asynchronous task runner that executes tasks in parallel upto a set concurrency limit. Overflow tasks are queued and executed as tasks finish.

// A "TaskRunner" Constructor takes one argument, "concurrency", and exposes one method "push" on its prototype. The "push" method takes one argument "task" which is a "function":

function TaskRunner(concurrency) {
    
}

TaskRunner.prototype.push = function(task) {
	
}

function randomTask(done) {
	
}
var tr = new TaskRunner(2);
tr.push(randomTask);
tr.push(randomTask);
tr.push(randomTask);
tr.push(randomTask);

// Expected Output:
// Started task 1 at 0 seconds
// Started task 2 at 0 seconds
// Started task 3 at 1.2 seconds
// Started task 4 at 3.0 seconds