JSFiddle - React, Tailwind, and code Playground
JavaScript
function fn(n) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
if(n >= 0) {
console.log(n);
resolve(n || 0);
} else {
reject(new Error(n || 0));
}
}, 500);
});
}
function fError(error) {
throw error;
}
function finalErrorHandler(error) {
console.log('Final: ' + error.message);
}
var Function1 = fn.bind(null, 1);
var Function2 = fn.bind(null, -2);// <<<<<< negative 2
var Function3 = fn.bind(null, 3);
var Function4 = fn.bind(null, 4);
var errorHandler1 = fError;
var errorHandler2 = fError;
var errorHandler3 = fError;
var errorHandler4 = fError;
Promise.resolve()
.then(function() { return Function1().catch(errorHandler1); })
.then(function() { return Function2().catch(errorHandler2); })
.then(function() { return Function3().catch(errorHandler3); })
.then(function() { return Function4().catch(errorHandler4); })
.catch(finalErrorHandler);