首页 > 其他分享 >promise(A).catch(f1).then(f2),f1执行后f2回执行吗,为什么

promise(A).catch(f1).then(f2),f1执行后f2回执行吗,为什么

时间:2024-05-20 16:00:00浏览次数:23  
标签:f1 f2 错误 promise catch Promise

在JavaScript中,Promise链中的.catch()方法用于捕获前面Promise中的错误,并且无论这个错误是在.then()链中的哪一个环节产生的,.catch()都会捕获到。当错误被.catch()处理之后,如果希望后续的Promise链继续执行,可以这样做。

所以对于代码 promise(A).catch(f1).then(f2)

  1. 首先会执行promise(A),如果它成功(resolved),则会继续执行到.then(f2)部分,此时f2会被调用。
  2. 如果promise(A)失败(rejected),则会跳过任何.then()直接进入.catch(f1),执行错误处理函数f1
  3. 关键在于.catch(f1)之后的.then(f2)部分。一旦f1处理完错误(即使它没有明确解决这个错误,也就是没有在f1中调用return Promise.resolve()或Promise.reject()),控制权会传递给接下来的.then(f2),因此f2会执行。这是因为.catch()有效地“消化”了错误,使得Promise链可以继续正常进行。

总结:是的,f1执行后,只要f1内部没有抛出新的未被捕获的异常或者返回一个rejected的Promise,f2就会执行。这是因为.catch()处理了错误,保持了Promise链的连续性。

标签:f1,f2,错误,promise,catch,Promise
From: https://www.cnblogs.com/zsnhweb/p/18202136

相关文章

  • [NCTF2019]True XML cookbook
    [NCTF2019]TrueXMLcookbook打开环境是之前一道题的登录框先按原来那道题的payload进行测试,payload和结果如下:<?xmlversion="1.0"?><!DOCTYPEllw[<!ENTITYfileSYSTEM"file:///flag">]><user> <username>&file;</username> ......
  • CF1085D Minimum Diameter Tree 题解
    CF1085DMinimumDiameterTree题解比较水的一道绿题观察样例可以发现,边权都平分在叶子节点唯一的一条连边上,由此猜到联想到可以把贪心地将边权全部平均分配到这些边上,这样写出来就能AC了。如何证明先来一张图方便理解:利用反证法:假设按上述做法分配边权后可以至少修改一次......
  • stm32f103c8t6使用bootloader进行ymodem下载和app程序测试,部分总结(暂未测试中断向量偏
    bootloader程序部分(功能测试)print_boot_message();/*USERCODEEND2*//*Infiniteloop*//*USERCODEBEGINWHILE*/uint8_tkey_get_state;while(1){/*USERCODEENDWHILE*//*USERCODEBEGIN3*/key_get_state=g......
  • JavaScript Promise Time Limit Function All In One
    JavaScriptPromiseTimeLimitFunctionAllInOneLeetCode2637.PromiseTimeLimiterrorsfunctiontimeLimit(fn:Fn,t:number):Fn{returnasyncfunction(...args){//letbegin=Date.now();letbegin=performance.now();letresult=......
  • XYCTF2024
    XYCTF2024warmup又是md5源码<?phpinclude'next.php';highlight_file(__FILE__);$XYCTF="Warmup";extract($_GET);if(isset($_GET['val1'])&&isset($_GET['val2'])&&$_GET['val1']!=$......
  • CF1600~1700
    1731C\(a\)的质因子为奇数个,当且仅当\(a\)是平方数。我们考虑如何处理出有多少段的异或和为平方数。枚举平方数\(p\),枚举左端点\(l\),问题就变成了有多少\(r\)使得\(\oplus_l^ra_i=p\),处理出异或前缀和\(s_i=\oplus_1^ia_i\),查询有多少\(r\)使得\(s_r\opluss_{l-1}......
  • CF1884D Counting Rhyme 题解
    题目链接:CF或者洛谷给个莫反题解,讲讲常规套路题目要求满足没有\(a_k\mida_i与a_k\mida_j\)的\((i,j)\)的对数,显然即不存在\(a_k\mid\gcd(a_i,a_j)\)。稍微拓展下,如果不存在整除多个数,那么显然不整除它们的\(\gcd\)即可,因为它们的公因数即为满足的最大数,如果为......
  • CF1019C Sergey's problem
    CF1019CSergey'sproblem很巧妙的构造题。思路首先我们可以把这题分成两个部分:解决覆盖问题解决边冲突问题\(vis_i\)为\(i\)点是否被覆盖的标记,\(cis_i\)为\(i\)点是否被选的标记。part1覆盖问题从小到大枚举\(i\),对于点\(i\)如果它没被覆盖,那么我们把点\(i......
  • 题解:CF1954F Unique Strings
    link计数类*3100首次独立过纪念版题解。首先我们考虑一个去重的问题。貌似针对循环同构去重的问题,只能从循环节上入手。那么我们考虑设\(dp(d)\)为最小循环节长度恰好为\(d\)不同方案数个数,则答案为:\[\sum_{d=1}^ndp(d)=\sum_{d|n}\frac{dp(d)}{d}\]这似乎是一条可行......
  • stm32f103c8t6对flash进行操作,Hal库,擦除1页数据大小,写入128字节大小,读取指定地址128字
    参考这篇:STM32IAP应用开发——自制BootLoader-CSDN博客把工程转到HAL库使用的函数,用HAL自带的HAL_FLASHEx_EraseHAL_FLASH_Program 串口显示结果 验证没问题flash在hal库使用的驱动程序#include"flash.h"externvoidFLASH_PageErase(uint32_tPageAddress);//......