Search code examples
javascriptecmascript-6promisees6-promise

Rejecting a Promise with another new Promise


Im playing around with promises and i wanted a way of rejecting the promise inside of a then callback. So this is done by either calling throw return or return Promise.reject();. So far so good. You can accomplish this by also calling new Promise.reject(); withou a return.

Can someone explain why does this work?

new Promise((res, rej) => {
  setTimeout(() => {
    res(200);
  }, 2000);
})
  .then(() => {
    console.log("ok1");
    new Promise.reject();
    // return Promise.reject(); 
  .then(() => {
    console.log("ok2");
  })
  .catch(() => {
    console.log("error");
  });

Solution

  • new Promise.reject()

    Your code throws an exception. Exceptions cause promises to be rejected.