用另一个新的 Promise 拒绝一个 Promise

Rejecting a Promise with another new Promise

我在玩弄 promises,我想要一种在 then 回调中拒绝 promise 的方法。所以这是通过调用 throw return 或 return Promise.reject(); 来完成的。到目前为止,一切都很好。您也可以通过调用 new Promise.reject(); 来完成此操作;没有 return。

有人可以解释为什么这样做吗?

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");
  });

因为Promise.reject不是构造函数,所以这段代码工作正常:

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

new Promise.reject()

您的代码抛出异常。异常导致承诺被拒绝。

新 Promise.reject 抛出错误,因此代码跳转到 catch 部分并出现以下错误:Promise.reject is not a constructor

new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('OK');
  }, 2000);
}).then((res) => {
    console.log(res);
    new Promise.reject(); 
    })
  .then((res) => {
    console.log(res);
  })
  .catch((err) => {
    console.log('error' ,err.message);
  });