How do I break a promise chain?

前端 未结 4 1492
北恋
北恋 2020-12-03 12:19

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((res         


        
4条回答
  •  青春惊慌失措
    2020-12-03 12:50

    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

提交回复
热议问题