首页 > 其他分享 >promise.catch

promise.catch

时间:2024-08-09 14:50:01浏览次数:12  
标签:console log Caught Error promise error 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

标签:console,log,Caught,Error,promise,error,catch
From: https://www.cnblogs.com/Ly021/p/18350747

相关文章

  • JavaScript中的异步编程:Promise、async 和 await
    JavaScript中的异步编程:Promise、async和await在JavaScript中,Promise、async和await是处理异步操作的关键技术。这些技术允许开发者以更清晰、更可维护的方式编写异步代码,特别是在面对复杂的异步逻辑时。下面我会详细解释每个概念并展示它们是如何协同工作的。Prom......
  • uniapp Promise封装全局uni.request网络请求
    前言:在一个项目开发时,我们除了页面布局之外,就是数据处理了,封装一个全局的网络请求,有助于我们处理一些公用逻辑代码,更加专注于业务代码官方api说明:https://uniapp.dcloud.net.cn/api/request/request.html一般我们只关注这几个参数url也就是我们的baseurl,根域名header......
  • ES6新增内容 : Promise
    [学习文档] https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/PromisePromise对象首先明白同步与异步是什么:同步是指每项任务依次完成,前一项任务未结束无法执行后一项任务;异步指的是在执行一项任务时等待的空隙中,可以有办法继续执行其......
  • es6-promise-polyfill 自己实现promise.js
       https://github.com/lahmatiy/es6-promise-polyfill/blob/master/promise.js  (function(global){////CheckfornativePromiseandithascorrectinterface//varNativePromise=global['Promise'];varnativePromiseSupported=NativePr......
  • await 调用的函数不一定必须是 async 函数。 await 关键字通常用于 async 函数内部,用
    await调用的函数不一定必须是async函数。 await关键字通常用于async函数内部,用来等待一个Promise对象的解决。但如果被await调用的对象不是Promise,那么它会被直接返回。 functionnotPromiseFunction(){return42;}asyncfunctionexample(){const......
  • 异步操作的华尔兹,Promise详解,在ArkTs如何正确使用?如何使用Promise去封装Sqlite数据库
    目录1.什么是Promise2.Promise中的基本概念3.理解Promise4.Promise的重要方法5.实战我们可以使用Promise去封装一个Splite1.什么是PromisePromise是一种用于异步编程的模式,它提供了一种优雅的方式来处理异步操作的结果,避免了回调地狱问题。在Promise中,每一个Promis......
  • POJ3278 Catch That Cow
    CatchThatCowTimeLimit: 2000MS MemoryLimit: 65536KTotalSubmissions: 222142 Accepted: 67092DescriptionFarmerJohnhasbeeninformedofthelocationofafugitivecowandwantstocatchherimmediately.Hestartsatapoint N (0......
  • CF1990E Catch the Mole
    题意给你一颗树,大小为\(n\)。初始有一颗黑点在树上某个节点,你每次可以查询\(x\)表示黑点是否在\(x\)的子树内,且若答案为否则黑点会移动到父亲节点上。你需要在160次查询内找到黑点当前在哪个节点(不要求求出初始位置)。\(n\le5000\),EasyVer.查询次数300。分析由于每......
  • vue3 Promise处理异步操作的对象
    Promise是JavaScript中用于处理异步操作的一种对象。它代表了一个异步操作的最终完成(或失败)及其结果值。在处理异步操作时,Promise提供了一种更干净、更可读的方式来管理回调函数。Promise的状态一个Promise对象有三种状态:Pending(进行中):初始状态,操作尚未完成。Fulfille......
  • 通过可视化彻底搞懂 Promise执行逻辑
    JavaScript中的Promise一开始可能会让人感到有些难以理解,但是如果我们能够理解其内部的工作原理,就会发现它们其实是非常易于掌握的。在这篇博客文章中,我们将深入探讨Promise的一些内部机制,并探索它们是如何使得JavaScript能够执行非阻塞的异步任务。一种创建Promise的......