百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

碎片时间学编程「134]:JS 承诺中的 then 和 finally 有什么区别?

liuian 2025-03-25 15:21 74 浏览


从表面上看,Promise.prototype.then()Promise.prototype.finally()似乎很相似。但是我们需要记住一些重要的区别。

第一个也是最明显的一个是它finally()没有收到承诺链的结果值。同样,由于 finally() 没有收到任何值,因此也无法更改 promise 的已解析值。

JavaScript

new Promise((resolve, reject) => resolve(10))
  .then(x => {
    console.log(x); // 10
    return x + 1;
  })
  .finally(x => {
    console.log(x); // undefined
    return x + 2;
  });
// Promise resolves to 11, the return value of then()

另一个区别与错误处理以及如何解决承诺链有关。有时,您可能希望推迟在 Promise 链中捕获错误,以便在其他地方处理它们。在这种情况下,then()不会执行链接的,而finally()会执行。此外,如果前一个catch()抛出异常,你最终会处于同样的情况。

new Promise((resolve, reject) => reject(0))
  .catch(x => {
    console.log(x); // 0
    throw x;
  })
  .then(x => {
    console.log(x); // Will not run
  })
  .finally(() => {
    console.log('clean up'); // 'clean up'
  });
// Uncaught (in promise) 0

这里的要点是你不应该替代then()finally()除非有非常具体的理由这样做。根据经验,finally()应该用于清理(清除超时、清空引用、重置 UI 状态等)。

更多内容请访问我的网站:https://www.icoderoad.com

相关推荐

联想电脑官网价格(联想电脑官网价格表)

这两个价格都比较高,官网标的指导价,实体店运行成本高,都是联想的代理商,非联想自营。建议先去实体店体验,再在主流电商参考价格。联想官网入口是:http://www.lenovo.com.cn/  联...

复制到u盘的文件不见了(复制在u盘的内容不见了怎么回事)

U盘里的文件如果不见了,可以先检查一下自己的电脑是不是中毒了。检查的方法很简单,直接进行扫描就行了,如果有病毒一般会显示出来的,进行查杀,查杀完了之后进行重启电脑,然后再读取U盘,一般文件就会显示出...

qq对战平台官方版(qq对战平台什么时候开放)

在我的电脑文件夹里面先打开War进游戏,然后退出,再用腾讯对战平台打开就可以打开了,不用谢我啦,祝各位玩的愉快啦,睡觉去了~~~~~~~~顺便说下,我的ID是九尾人柱力,玩的可以加我首先安装IPX协...

tp link路由器手机设置教程(tp-link路由手机设置)
  • tp link路由器手机设置教程(tp-link路由手机设置)
  • tp link路由器手机设置教程(tp-link路由手机设置)
  • tp link路由器手机设置教程(tp-link路由手机设置)
  • tp link路由器手机设置教程(tp-link路由手机设置)
破解qq空间(破解qq空间访问权限的软件)

空间设置了访问权限,所以不是好友,或是不知道问题密码的人,是进不去的!没有可以强行进入的方法,因为涉及他人隐私问题,除非本人对你开放。一般限制访问QQ空间访问权限会有三种情况:1、仅自己。2、QQ...

手机怎么把qq空间关了(手机qq空间怎么关掉)
  • 手机怎么把qq空间关了(手机qq空间怎么关掉)
  • 手机怎么把qq空间关了(手机qq空间怎么关掉)
  • 手机怎么把qq空间关了(手机qq空间怎么关掉)
  • 手机怎么把qq空间关了(手机qq空间怎么关掉)
联想win7原版(联想正版win7原版)

要还原联想笔记本自带的Win7系统,首先需要进入电脑的BIOS界面,将启动项设置为光驱或U盘。然后将联想笔记本自带的恢复盘或安装盘插入电脑,并重启电脑。接着按照提示进行操作,选择还原系统选项,等待系统...

bonjour软件有用吗(bonbon是啥软件)

1.bonjour软件是苹果公司在其开发的操作系统MacOSX10.2版本之后引入的服务器搜索协议所使用的一个商标名。2.安装了类似的itunes的软件以后,电脑上就会出现Bonjour软件...

笔记本电脑开机蓝屏无字(笔记本屏幕蓝屏什么字也没有)

初步怀疑是电脑温度过高导致的问题。出现蓝屏毛病的原因很多:1、电脑蓝屏是由于病毒破坏系统文件,导致系统故障进而出现蓝屏。2、电脑超频过度引起电脑蓝屏,这也可能涉及到下面的温度过高引起的蓝屏。3、内存条...

文件格式转换器免费版(文件格式转换器免费版下载安装)

一般来说,使用全能格式转换器转换文件的步骤大致如下:1.打开全能格式转换器,并点击“添加文件”按钮,选择您要转换的文件。2.在“输出格式”选项中,选择您想要将文件转换成的格式。3.如果需要,您可...

口碑最好的随身wifi品牌(随身wifi十大排名)

哪个牌子最好用性价比最高一目了然!格行设备价格:69/99/109/139/168(性价比高)芯片:进口马维尔芯片套餐:双网设备,套餐价格一致,随用随充续航:3000毫安18小时左右 33...

新买的台式电脑没声音(新买的台式机没有声音)

解决方法如下:1、查看主板的声卡驱动装没装上。2、驱动装好了,在右下角的小喇叭有没有,如果有,鼠标放在上面,右击就会看到声音的各种设置,如果没看到小喇叭,进入设备管理器看一下声音的硬件上是否有黄色标记...

dlink路由器设置密码步骤(dlink路由器设置教程)
  • dlink路由器设置密码步骤(dlink路由器设置教程)
  • dlink路由器设置密码步骤(dlink路由器设置教程)
  • dlink路由器设置密码步骤(dlink路由器设置教程)
  • dlink路由器设置密码步骤(dlink路由器设置教程)
三星笔记本u盘启动快捷键(三星笔记本u盘启动设置)

开机出现“SAMSUNG”画面时按F2进入BIOS设置,找到【Advanced】选项下,将快速启动“FastBIOSMode”项选为“Off”2.按F10键保存退出并重启,插入U盘,再次按F2键进入B...

普联无线路由器设置(普联路由器上网设置)

关于这个问题,以下是普联无线路由器的设置步骤:1.首先,将您的普联无线路由器与电脑或笔记本电脑连接。2.打开您的浏览器,输入路由器的IP地址(通常为192.168.1.1或192.168...