JSFiddle - React, Tailwind, and code Playground
JavaScript
function chain(callback) {
console.log("<chain>");
var queue = [];
function _next() {
console.log("<_next>");
var cb = queue.shift();
if (cb) {
cb(_next);
}
console.log("</_next>")
}
setTimeout(_next, 0);
var then = function(cb) {
console.log("<then>");
queue.push(cb);
console.log("</then>");
return { then: then }
}
console.log("</chain>");
return then(callback);
}
chain(function(next) {
console.log('1');
setTimeout(function() {
console.log('2');
next();
}, 1000);
}).then(function(next) {
console.log('3');
setTimeout(function() {
console.log('4');
next();
}, 1000);
}).then(function(next) {
console.log('5');
next();
});