Fiz o teste abaixo e ele retorna o valor do teste3, depois o teste2 e por fim o teste1, queria saber se tem como fazer ele executar na ordem que coloquei no pipe?
const pipe = (...fn) => value => fn.reduce( (nextValue, fn) => fn(nextValue), value);
const teste1 = (valor1) => {
try {
setTimeout(() => {
console.log('Time out 1');
return valor1; }
, 8000);
} catch (error) {
throw new Error('Erro 1');
}
}
const teste2 = (valor1) => {
try {
setTimeout(() => {
console.log('Time out 2');
return valor1;
}, 5000);
} catch (error) {
throw new Error('Erro 2');
}
}
const teste3 = (valor1) => {
try {
setTimeout(() => {
console.log('Time out 3');
return valor1;
}, 3000);
} catch (error) {
throw new Error('Erro 3');
}
}
async function init() {
console.log('Iniciando Processamento');
const enviar = pipe( teste1, teste2, teste3 )
enviar({ arroz: 'abc' });
}
init();