JSFiddle - React, Tailwind, and code Playground

by CodeRenaissance

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.3.0/knockout-debug.js"></script>

JavaScript

var actionChainManager = (function(){
    var $ = jQuery;
    var isBusy = ko.observable(false);
    var actionChain = $.when();
    
    function add(fn){
        var contextActionChain;
        if(typeOf(fn) === "function"){
             isBusy(true);
             actionChain = $.when(actionChain).then(fn);
             contextActionChain = actionChain;
             contextActionChain.done(function(){
                 if(contextActionChain === actionChain){
                         actionChain = null;    
                         isBusy(false);
                 }
             });
        }
    }

    return {
        add: add,
        isBusy: isBusy
   };
}());