JSFiddle - React, Tailwind, and code Playground
JavaScript
function encadear() {
var cadeia = [].slice.call(arguments);
return function(dadoInicial, end) {
var fns = cadeia.slice();
function exec(err, data) {
if (err) return end(err);
var next = fns.pop();
if (!next) return end(null, data);
next(data, exec);
}
exec(null, dadoInicial);
}
}
function add1(n, callback) {
setTimeout(function() {
callback(null, n + 1);
}, 10);
}
function mul3(n, callback) {
setTimeout(function() {
callback(null, n * 3);
}, 10);
}
var add1mul3 = encadear(mul3, add1);
add1mul3(4, function(err, result) {
console.log(err, result); // 15
});