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

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

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


从表面上看,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

相关推荐

显卡第一梯队品牌(“显卡排名”)

1、七彩虹Colorful——深圳市七彩虹科技发展有限公司2、华硕ASUS——华硕电脑(上海)有限公司3、微星MSI——微旭商贸(上海)有限公司4、影驰GALAXY——深圳市影驰科技有限责任公司5、蓝...

2014cad安装步骤图解(2014cad安装文件在哪个文件)

首先,将CAD软件的安装包下载到电脑中,并解压压缩文件。然后,运行安装包,根据提示选择安装语言、安装路径等选项。接着,同意许可协议并选择安装组件,如语言包、样例文件等。最后,点击安装按钮开始安装。等待...

电脑突然找不到网络适配器(电脑突然找不到网络适配器了)

如果您的电脑的网络适配器不见了,可能是由于以下原因之一:1.驱动程序问题:网络适配器可能需要正确的驱动程序来正常工作。如果您的操作系统缺少或损坏了适配器驱动程序,适配器可能会消失。您可以尝试重新安装...

flash插件是必须的吗(flash插件需要下载吗)

电脑最好不要装flash的原因如下1、桌面端,Flash一直漏洞不断,经常看到Windows为Flash更新漏洞补丁,但是,始终压不住Flash的漏洞百出。而漏洞,就成为了攻击者进攻电脑...

windows7系统在哪里下载软件

Win7下载软件的方法有很多。第1种你可以去安装一些软件管家,或者是如360极速版阵代软件里头有都有软件管家,然后通过软件管家去下载软件。另外的一种方法是通过浏览器,然后打开你所需要软件的官方网站或...

手机截屏在哪里找(手机截屏在哪里找!pi111d rwmw)
手机截屏在哪里找(手机截屏在哪里找!pi111d rwmw)

一句话可以告诉楼主,手机屏幕往下划,一般都会有截屏按钮,或者在系统应用里也有截屏软件,如果都没有截屏的话,推荐楼主在应用商店下载一个截屏软件,希望以上回答能帮助到楼主。我的360手机三指向下划就可以截屏,很多手机都支持,可以试试。看说明书,...

2026-01-17 17:21 liuian

ps网页版(手机截图ps无痕改字)

对于低配置电脑,推荐使用PhotoshopCS5、PhotoshopCC2015.5和Photoshop2020这三个版本。PhotoshopCS5:功能相对完整,配置要求低。Photosh...

win7没有pdf虚拟打印机驱动(win7自带pdf虚拟打印机)

1、手动在控制面板添加打印机,选择“添加本地打印机”,(如果是非win7系统的话,还要点上并取消“自动检测并安装即插即用打印机”选择),端口选择“AdobePDF”,如果没有这个端口,则选择创建新端...

win732位系统哪个版本最流畅

如果是老电脑装32位更流畅,32位对内存的需求不高,只要有4G就可以正常使用。毕竟旧电脑的硬件配置不怎样,32位相对于64位来说,对硬件配置没有64位要求这么严格,不论在CPU还是内存上来说。如果是新...

下列说法正确的是电子商务(以下关于电子商务的说法说法错误的是)

电子商务通常是指在全球各地广泛的商业贸易活动中,在因特网开放的网络环境下,基于客户端/服务端应用方式,买卖双方不谋面地进行各种商贸活动,实现消费者的网上购物、商户之间的网上交易和在线电子支付以及各种商...

笔记本怎么调整亮度(笔记本如何调整亮度)
  • 笔记本怎么调整亮度(笔记本如何调整亮度)
  • 笔记本怎么调整亮度(笔记本如何调整亮度)
  • 笔记本怎么调整亮度(笔记本如何调整亮度)
  • 笔记本怎么调整亮度(笔记本如何调整亮度)
coreldrawx4序列号是多少(coreldraw x4序列号全是数字跟英文吗)

要将CDR文件保存为X4版本,请打开CDR文件,然后执行以下步骤:选择"文件"菜单点击"另存为"选择"CDR格式"作为保存类型选...

mac系统安装步骤(苹果装mac系统怎么安装)
mac系统安装步骤(苹果装mac系统怎么安装)

Mac装Windows目前有两种主流的方式:1、通过双系统。2、通过虚拟机。双系统:双系统优点是系统安装在底层,所以前提你的苹果笔记本必须为Intel架构(现在基本都是),这样全部硬件都可以被底层调用。但缺点也恰恰是因为这一点,苹果笔记...

2026-01-17 15:37 liuian

网页认证wifi入口(wlan网页认证)

连接后点击浏览填写手机号就可以进入了。柠檬WiFi网页认证登录入口是指柠檬WiFi的登录页面,用户需要在打开浏览器后,在地址栏输入或点击打开指定的网页链接,进入柠檬WiFi的认证登录界面。该认证登录入...

无线鼠标有电但是动不了(无线鼠标排行榜)

电脑无线鼠标不动了,解决方法:1、确认鼠标上的开关是否打开。如果没打开,请打开开关按钮。2、确认鼠标里的电池是否有电。如果电池没电,请更换新的电池。3、确认接收器是否连接好,如果已接好,尝试请更换另一...