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

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

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


从表面上看,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、环保类:“植树”“清扫公共设施”“社区宣传”等。2、科普类“参观学习科研机构”“动手小发明”等。3、爱心类“帮扶老人”“义捐灾区”“募集贫困儿童”等。4、成长类“义...

windows7旗舰版怎么升级到windows10

Windows7旗舰版32位,可以用U盘升级为windows10吗?这个是肯定可以的呀。Windows7升级为windows10,这是一定是可以的。关键一点。你会用U盘升级系统才可以的呀。如果你不...

华为服务器安装系统教程(华为服务器安装步骤)

1.准备安装环境:检查服务器的电源、网络连接及其他配件是否正常。2.安装软件:将光盘或U盘中的安装文件拷贝到服务器上,然后执行安装命令。3.配置服务器:根据业务需要对服务器进行IP地址、DNS、...

win10自动关机命令无效(win10 自动关机命令)

因为有时效性,操作方法如下:1、首先打开手机,点击手机界面上的“设置”。2、打开设置界面后,往下滑动手机屏幕,找到“智能辅助”并点击。3、进入智能辅助界面后,点击“定时开关机”。4、然后在下面这个界面...

windows7硬盘最低要求(win7硬盘多大够用)

1、官方给出的Win7最低配置要求如下:  处理器:1GHz32位或64位处理器  内存:1GB及以上  显卡:支持DirectX9128M及以上(开启AERO效果)  硬盘空间:16G...

笔记本处理器排行榜最新2025

笔记本电脑CPU天梯图,笔记本电脑CPU排行,是按照CPU的跑分进行排序,进行综合性能对比。可以一定程度上反应CPU的性能优劣,方便进行笔记本电脑CPU对比。2019年的CPU天梯图,基本是Intel...

微软公司中国总部(微软公司中国总部在哪个城市)

北京是总部,在上海、广州、武汉、深圳设有分公司。薪资待遇只能说好,具体多好,还要看你是什么岗位

联想电脑恢复出厂(联想电脑恢复出厂设置d盘会清空么)

一、首先,启动联想电脑,开启Windows10系统,然后选择桌面上“开始菜单”里,选择“设置”,点击打开。二、接着,在“设置”的窗口里选择“更新与安全”,点击打开。三、接着,在“更新与安全”界面中...

中关村在线手机参数(中关村在线手机性能)

oppor11st配备骁龙660,三星AMOLED6.01/6.43英寸18:9全面屏,支持快充,最高6GB运存。支持HiFi。双F1.71600万+2000万摄像头。  oppor11...

磁力猫新版官网(磁力猫蓝奏云博客园)

要添加磁力猫到迅雷中,首先需要在磁力猫网站上找到想要下载的资源,然后复制磁力链接。接着,在迅雷软件中选择“新建任务”并粘贴复制的磁力链接,点击“确定”即可开始下载。如果没有自动开始下载,可以手动点击“...

外接键盘按键错乱怎么恢复(外接键盘键位失灵)

1、首先,依次点击开始菜单-->搜索“设备管理器”,然后单击右侧的“打开”选项。2、其次,完成上述步骤后,系统将打开“设备管理器”窗口。3、接着,完成上述步骤后,展开键盘,右键单击,选择“更新驱...

最好的在线影视免费(哪个网站能看到免费的电视剧)

在线网站看电影不卡顿1.欧西电影它是一个很好用的追剧网站,里面都是一些高清免费的电影,但是只能在线观看,不能够去下载,不过它还支持手机观看哦,非常的方便,只要网络好就没问题了。2.思古影视这是一个可以...

解除安全模式dnf(解除安全模式怎么解除)
  • 解除安全模式dnf(解除安全模式怎么解除)
  • 解除安全模式dnf(解除安全模式怎么解除)
  • 解除安全模式dnf(解除安全模式怎么解除)
  • 解除安全模式dnf(解除安全模式怎么解除)
路由器更换密码(mw300r路由器初始密码)

打开浏览器,在地址栏输入192.168.1.1(一般路由器地址是这个或者查看路由器背面的登录信息)进路由-输入用户名,密码,(默认一般是admin)。2、点击:系统工具--登陆口令--修改---保存...

如何设置无线路由器的wifi密码

1、首先连接、开启路由器,使它可以正常工作;其次把网线的两头分别与路由器的外网接口、电脑的内网接口相接;最后开启浏览器,进入路由器的设置主页,在密码管理选项中,输入相应的账户名称、密码,点击保存就设置...