JSFiddle - React, Tailwind, and code Playground

by jfriend00

JavaScript

function delay(t, val) {
    return new Promise(function (resolve) {
        setTimeout(function() {
            resolve(val);
        }, t);
    });
}


function flatten(arr) {
    return arr.reduce(function(a, b) { return a.concat(b); }, []);
}

var p1 = delay(100, 1);
var p2 = delay(200, 2);
var p3 = delay(300, 3);
var p4 = delay(120, 4);
var p5 = delay(150, 5);

var ps = [p1, [p2, p3], [p4, p5]]

Promise.all(flatten(ps)).then(function(r) {
  log(r);
});


// utility function to display output
function log(args) {
    var str = "";
    for (var i = 0; i < arguments.length; i++) {
        if (typeof arguments[i] === "object") {
            str += JSON.stringify(arguments[i]);
        } else {
            str += arguments[i];
        }
    }
    var div = document.createElement("div");
    div.innerHTML = str;
    var target = log.id ? document.getElementById(log.id) : document.body;
    target.appendChild(div);
}