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

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

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


从表面上看,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、同时按下win+R调出运行对话框输入d...

2025最新显卡排名天梯图(2021显卡性能天梯5月)

给你推荐一个游戏。《生存几何》这款游戏是一款末世下的生存类型的策略手游,游戏中玩家想要活下去就需要和变异的怪物进行战斗,获取物资才能够艰难的活下去。以生存、躲避攻击为主的野外探险系统,收集物资以养经营...

linux系统基本操作(linux系统基本操作总结)

查看linux操作系统呢,以下是具体方法:1、打开linux系统,在linux的桌面的空白处右击。?2、在弹出的下拉选项里,点击打开终端。?3、在终端窗口里输入uname-a,回车后即可查看到电脑和...

笔记本电脑键盘打不了字(笔记本电脑键盘打不了字是怎么回事)

笔记本电脑键盘无法输入文字处理方法1.首先检查一下键盘是否损坏,查看键盘的连接线路有没有问题,如果是usb接口就换一个接口测试看看。同时确定小键盘上的numlock键有没有打开,如果你没有打开它,我们...

安装系统有几种方法(安装系统的一般步骤)

用U盘安装计算机系统的要点:  1、制作启动盘。(Windows7系统用4GU盘,WindowsXP系统用2GU盘)下载制作U盘启动盘的软件工具,安装、启动,按提示制作好U盘启动盘。  2、下载...

win7用户名和密码(win7用户名和密码是什么)

每个人的密码不一样,可以修改,修改步骤如下。修改win7系统用户名账号:①点击电脑左下方的开始图标,弹出窗口,找到“控制面板”。②点击“控制面板”,进入新的界面,找到“用户账号和家庭安全”...

手机怎么样重装系统(手机怎么样重装系统还原)

手机重装系统,可以网上下载卓大师等刷机软件,进去之后选择好手机型号及网络制式。千万不能选错,否则会导致手机变砖。刷机之前先去熟悉手机刷机前的准备。小米手机需要解锁,否则刷不了。现在主流手机都可以在官方...

win10系统下载的网址(下载win10的网页打不开)

windows10下载网址选择方法如下首先进入win10系统界面,点击win10系统的windows键;然后在磁贴界面选择浏览器按钮;接着点击win10浏览器的设置图标,选择设置按钮;最后点击高级设置...

win7和win8和win10的区别(win7和win8和win10哪个流畅)

10公斤耗电量更大洗衣机(不论是滚筒还是直简)l公斤和10公斤的主要区别是:洗衣服的容量不同,一般家庭选择7公斤;如果想洗大点的物件比如窗帘的要选10公斤。其次,越大的洗衣机用水量越大,但洗的东西也越...

在哪里注册邮箱(在哪里注册邮箱号怎么获得)

1、网页搜索邮箱注册网址,然后进入到邮箱注册界面。2、注册邮箱需要的信息,主要包括邮箱地址、密码、验证手机号等,选择一项填写。3、依次在框内填入注册信息,注册时需要验证手机验证码,点击免费获取手机验证...

惠普电脑型号对照表(惠普电脑系列)

惠普(HP)是全球知名的计算机与配件制造商,其产品线覆盖了笔记本电脑、台式电脑、工作站、打印机及其它相关产品。以下是部分惠普笔记本的机型列表:1.暗影精灵系列(Omen)2.轻薄本Envy3.商...

如何把u盘做成游戏盒子(u盘制作电视游戏)

这个是没有办法进行存储的,因为小米盒子本身就是一款网络播放的东西,设备并不是给你存储东西使用的,而U盘才是给你存储过去使用的,所以你如果想要用小米盒子加音乐或者歌曲给导入到电视上面播放的话,你就可以直...

word必须激活才能用吗(word必须激活才能用吗怎么设置)

Word软件是我们日常办公中最常使用到的一款文字处理软件,一般来说,文档的建立,文字的录入,文本的保存,都需要使用这款软件。Word办公软件属于office系统办公软件之一和excel软件,power...

苹果怎么安装外来软件(苹果怎么安装外来软件教程)
  • 苹果怎么安装外来软件(苹果怎么安装外来软件教程)
  • 苹果怎么安装外来软件(苹果怎么安装外来软件教程)
  • 苹果怎么安装外来软件(苹果怎么安装外来软件教程)
  • 苹果怎么安装外来软件(苹果怎么安装外来软件教程)
acer清除开机密码(acer电脑开机密码忘记怎么重置)

如果您忘记了ACER笔记本电脑的BIOS密码,您可以按照以下方法清除BIOS密码:1.通过CMOS电池清除BIOS密码第一种方法是通过清除CMOS电池来清除BIOS密码。CMOS电池是电脑主板上的一...