用另一个新的承诺拒绝一个承诺



我在玩promise,我想要一种在then回调中拒绝promise的方法。因此,这可以通过调用throw-return或return Promise.rejectt((;来完成;。到目前为止还不错。您也可以通过调用new Promise.rejectt((来实现这一点;没有回报。

有人能解释一下为什么这样做吗?

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

new Promise.reject()

您的代码引发异常。例外情况会导致承诺被拒绝。

因为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抛出一个错误,因此代码跳转到带有以下错误的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);
});

最新更新