Promises puzzle
by mbychawski
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.5.1/lodash.min.js"></script>
Babel + JSX
let something_ok = givePromiseFactory('something_ok ', true),
somethingElse_ok = givePromiseFactory('somethingElse_ok ', true),
anotherOne_err = givePromiseFactory('anotherOne_err ', false),
fooOne_err = givePromiseFactory('fooOne_err ', false);
console.clear();
something_ok()
.then((v)=>{
return somethingElse_ok(v);
})
.then((v)=>{
fooOne_err(v);
})
.then(something_ok, somethingElse_ok)
.then(anotherOne_err())
.then(something_ok, somethingElse_ok)
function givePromiseFactory(label, result){
return function(value){
let waitTime = _.random(0.5, 3, true) * 1000;
//let waitTime = 1;
if(!value) value = 'undefinded';
console.log(` ${label} -- called with value: "${value}"`);
return new Promise((resolve, reject)=>{
setTimeout(()=>{
if(result){
console.log(`Resolved -- ${label} `);
resolve(`value from ${label}`);
} else {
console.log(`Rejected -- ${label}`);
resolve(`reason from ${label}`);
}
}, waitTime);
});
}
}