JSFiddle - React, Tailwind, and code Playground

JavaScript

var f1 = function() {
    return new Promise(function(resolve){
        setTimeout(function() {
            console.log(1);
            resolve();
        }, 30);
    });
}

var f2 = function() {
    return new Promise(function(resolve){
        setTimeout(function() {
            console.log(2);
            resolve();
        }, 20);
    });
}

var f3 = function() {
    return new Promise(function(resolve){
        setTimeout(function() {
            console.log(3);
            resolve();
        }, 10);
    });
}

var seqRunner = function(deeds) {
  return deeds.reduce(function(p, deed) {
    return p.then(deed);
  }, Promise.resolve());
}
    
seqRunner([f1, f2, f3]).then(function() {
  console.log('done');
});