How do I break a promise chain?
javascript
Solution
You can `throw` an `Error` in the `else` block, then `catch` it at the end of the promise chain:
var p = new Promise((resolve, reject) => {
setTimeout(function() {
resolve(1)
}, 0);
});
p
.then((res) => {
if(false) {
return res + 2
} else {
// do something and break the chain here ???
throw new Error('error');
}
})
.then((res) => {
// executed only when the condition is true
console.log(res)
})
.catch(error => {
console.log(error.message);
})
Demo - https://jsbin.com/ludoxifobe/edit?js,console
Problem
How should I stop the promise chain in this case? Execute the code of second then only when the condition in the first then is true. ``` var p = new Promise((resolve, reject) => { setTimeout(function() { resolve(1) }, 0); }); p .then((res) => { if(true) { return res + 2 } else { // do something and break the chain here ??? } }) .then((res) => { // executed only when the condition is true console.log(res) }) ```