JSFiddle - React, Tailwind, and code Playground

by evgkch

JavaScript

const executeAction = (name, payload, done, errorDone) => {
	console.log(name);
	return done();
}

const executeActionsChain = (execute, catchError) => {
	const chain = [];
  execute(pushActionToChain);
  run(chain);
	function pushActionToChain(...args) {
  	chain.push(args);
  }
  function run([argList, ...restArgLists]) {
  	executeAction(
    	argList[0],
      argList[1],
      () => {
      	if (restArgLists && restArgLists.length > 0)
        	run(restArgLists);
      },
      e => {
        if (typeof catchError == 'function')
      		catchError(e);
      }
    );
  }
}

executeActionsChain(execute => {
	execute('1', {});
  execute('2', {});
})