JSFiddle - React, Tailwind, and code Playground

HTML

<input id="btn" type="button" value="Run Queue">

JavaScript

// Implements a FIFO function queue
var SequentialFunctionQueue = (function() {
    var _queue = [],
        _addToQueue,
        _execInOrder,
        _getNextFunc;

    _addToQueue = function(func) {
      _queue.push(func);
    };

    _execInOrder = function() {
      var i, j;

      for (i = 0, j = _queue.length; i < j; i += 1) {
        _getNextFunc().call();
      }
    };

    _getNextFunc = function() {
      if (_queue.length > 0) {
        return _queue.splice(0, 1)[0];
      }
    };

    return {
      addToQueue: _addToQueue,
      execInOrder: _execInOrder,
      getNextFunc: _getNextFunc
    };
}());

SequentialFunctionQueue.addToQueue(function(){alert('foo');});
SequentialFunctionQueue.addToQueue(function(){alert('bar');});

$('#btn').on('click', function(){ SequentialFunctionQueue.execInOrder(); });