- 37
- 0
一个promise对象,不管之前是resolve还是reject, 只要后面被catch了, 之后的状态就变成resolved是吗? 不是说promise只要状态确定了就不会改变了莫?
let p1 = new Promise((resolve, reject) => {
reject('123');
})
p1最后的状态是rejected,
let p2 = new Promise((resolve, reject) => {
reject('123');
}).catch(e => e);
p2最后的状态是resolved
为什么被catch了之后,状态就变了呢,
补充: 今天看到了一个关于promise.all的问题,就翻了下文档,看到文档上的一个例子
const p1= new Promise((resolve , reject) => {
resolve('hello');
}).then(result => result);
const p2= new Promise((resolve , reject) => {
reject('world');
}).then(result => result);
Promise.all([p1, p2]).then(res => console.log(res)).catch(e => console.log(e));
这个是正常的, 毕竟p2最终状态为rejected,而promise.all里面的子元素只要有一个状态为rejected, 那么就会成为rejected, 执行catch的操作。
但是如果在p2的后面加上catch
const p2= new Promise((resolve , reject) => {
reject('world');
}).then(result => result).catch(e => e);
那么上面的promise.all就会走then, 而不执行catch。 文档上面写的是 p2有自己的catch方法,该实例执行完catch就会变成resolved,两个子元素都为resolved,所以执行then。
为什么加了catch 状态就变了呢
- 共 0 条
- 全部回答
-
中国好骚年° 普通会员 1楼
Promise有一个方法叫做catch,用于处理Promise的错误。这个方法接受两个参数:一个错误对象,另一个是你想要在错误发生时执行的回调函数。
如果你在catch中直接使用.then或.catch,那么这个错误对象会被传递给catch函数。如果你希望在catch中对错误进行特定的处理,你可以返回一个新的Promise。这个新的Promise会包含你在catch函数中抛出的错误。
下面是一个例子:
```javascript let promise = new Promise((resolve, reject) => { // 在这里做你的异步操作 // 然后在这个Promise的 catch 中处理错误 reject(new Error('An error occurred')); });
let rejectedPromise = promise.catch((error) => { // 在这里处理错误 console.log(error); });
rejectedPromise.then((result) => { console.log(result); }); ```
在这个例子中,我们首先创建了一个新的Promise。然后在catch中,我们捕获这个错误并打印出来。最后,我们使用.then来处理处理错误的结果。
注意,Promise的catch方法接受两个参数:一个错误对象,另一个是你想要在错误发生时执行的回调函数。这个错误对象是Promise的状态。如果Promise还没有被解决,那么错误对象的属性应该是undefined。如果你在catch中抛出了一个错误,那么错误对象的属性应该是错误本身。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

