promise.catch

在 JavaScript 中,如果你在 Promise 链中使用了 catch,并且 catch 捕获到一个异常后,后面的 then 仍然会被执行,但有一些具体的行为取决于 catch 中的操作。

1、当promise.catch捕获到异常并返回一个值,那么后续的 then 会继续执行,并且接收 catch 中返回的值作为输入。如:

new Promise((resolve, reject) => { reject('Error'); }) .catch(error => { console.log('Caught:', error); // 输出: Caught: Error return 'Recovered from error'; // 返回值 }) .then(result => { console.log('Then:', result); // 输出: Then: Recovered from error });

2、如果 catch 中捕获到异常后没有返回值,而是抛出另一个错误或重新抛出异常,那么后续的 then 不会被执行,而是会跳到下一个 catch(如果有的话),或导致未处理的 Promise 异常。

new Promise((resolve, reject) => { reject('Error'); }) .catch(error => { console.log('Caught:', error); // 输出: Caught: Error throw new Error('New Error'); // 抛出新的错误 }) .then(result => { console.log('Then:', result); // 不会执行 }) .catch(error => { console.log('Caught again:', error); // 输出: Caught again: Error: New Error });

3、如果 catch 中捕获到异常,但没有返回任何值,也没有抛出异常,那么后续的 then 仍然会被执行,但 then 接收到的值将是 undefined。

new Promise((resolve, reject) => { reject('Error'); }) .catch(error => { console.log('Caught:', error); // 输出: Caught: Error }) .then(result => { console.log('Then:', result); // 输出: Then: undefined });

总结来说,catch 之后的 then 是否会被执行,取决于 catch 中的操作。如果 catch 处理了异常并返回了值,那么 then 会执行并接收这个值。如果 catch 中抛出了新的错误或异常,那么 then 不会执行,而是会进入下一个 catch

posted @   Ly021  阅读(229)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示