JSFiddle - React, Tailwind, and code Playground

by joplomacedo

JavaScript

const in_process = {};

function Process ( process_id, f ) {
    if ( process_id in in_process ) {
        return Promise.reject('already_in_proccess');
    }

    in_process[process_id] = 1;

    return f().finally( () => { 
		delete in_process[process_id]
		console.log(process_id);
	});
}



Process('theprocess', () => {
	return new Promise( (resolve, reject) => {
		setTimeout( () => {
			resolve()
		}, 3000);
	});
})

Process('theprocess', () => {
	return new Promise( (resolve, reject) => {
		setTimeout( () => {
			resolve()
		}, 3000);
	});
})

setTimeout( () => {
	Process('theprocess', () => {
	return new Promise( (resolve, reject) => {
		setTimeout( () => {
			resolve()
		}, 3000);
	});
})

}, 5000)