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(); });