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) }) ```

Original source