用另一个新的 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);
});
我在玩弄 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);
});