JSFiddle - React, Tailwind, and code Playground

JavaScript

function doTask(taskNum){
    var dfd = $.Deferred(), 
        time = Math.floor(Math.random()*3000);
    console.log("running task " + taskNum);
    setTimeout(function(){
        console.log(taskNum + " completed");
        dfd.resolve(taskNum);
    },time)

    return dfd.promise();
}

var tasks = [1,2,3].map(function(task) { return doTask(task); });

$.when.apply($, tasks).then(function() { console.log(arguments); });