promise如何抛出异常
时间: 2023-11-16 08:56:40 浏览: 200
在Promise中,可以通过在resolve或reject处理函数中抛出错误来抛出异常。如果在resolve处理函数中抛出错误,那么错误会被抛到全局,状态变为rejected;如果在reject处理函数中抛出错误,错误也会被抛到全局,状态同样变为rejected。但是,如果在then的reject处理函数中抛出错误,错误会被catch捕获到,状态变为fullfilled。这是因为catch方法会返回一个新的Promise对象,所以如果在catch方法中处理了错误,那么Promise的状态就会变为fullfilled。
举个例子,如果我们在Promise中使用then和catch方法,可以这样写:
```
var promise = new Promise((resolve, reject) => {
reject();
}).then(() => {
console.log('resolve');
}, (err) => {
throw new Error('nono'); //在reject处理函数中抛出错误
console.log('reject');
console.log(err);
}).catch((err) => {
console.log('catch'); //错误被catch捕获到
console.log(err);
});
setTimeout(() => {
console.log(promise);
}, 0);
```
在上面的例子中,我们在reject处理函数中抛出了一个错误,但是这个错误被catch方法捕获到了,所以Promise的状态变为fullfilled。
阅读全文