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

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

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


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

相关推荐

手机如何切换成ie浏览器(手机浏览器怎么切换成电脑浏览器)
手机如何切换成ie浏览器(手机浏览器怎么切换成电脑浏览器)

手机(安卓系统、IOS系统)不支持IE浏览器的。IE浏览器属于Trident内核,而且IE版权归微软所有,所以手机不能使用IE浏览器。1、进入手机浏览器,选择三字形的按钮。2、选择设置。3、在这里设置这里选择浏览器标识。4、然后点击电脑。5...

2026-01-21 08:21 liuian

哪个牌子的u盘好用耐用(什么牌子的u盘最好最耐用知乎)

雷克沙u盘质量最好最耐用品牌,雷克沙U盘,外观比较精致,小巧方便携带,和市面上常见的小型挂钥匙的U盘放在一起比较一下,大小完全一样,做工优良,外壳采用锌合金材质,读写速度也很快,USB3.1读写等级,...

怎么打开文件夹的隐藏文件(怎么打开文件夹的隐藏文件图标)
怎么打开文件夹的隐藏文件(怎么打开文件夹的隐藏文件图标)

步骤/方式1以Windows7为例,首先在我的电脑中选择需要显示隐藏文件的文件夹,点击工具选项卡,如下图所示。步骤/方式2点击工具选项卡下的文件夹选项,进入文件夹选项对话框,如下图所示。步骤/方式3在隐藏文件和文件夹选项中,勾选显示隐藏的文...

2026-01-21 07:55 liuian

计算器下载安装到手机桌面上

在手机桌面上安装计算器应该有几种方法,我以Android手机为例来说明:1.从应用商店下载安装:打开GooglePlay商店或其他应用市场,搜索计算器应用,下载并安装即可。安装完成后,可以在应用...

桌面壁纸图片2025最火爆(女人最旺财的手机壁纸)

动态壁纸2022最火可以设置声音,具体步骤如下:1.打开设置应用程序,然后选择“声音和通知”。2.在“声音和通知”选项卡中,选择“声音”。3.在“声音”选项卡中,你可以选择想要在动态壁纸上播放的...

怎么查看路由器登录密码(怎么查看路由器密码在哪里)

1首先,我们需要找到路由器,然后查看路由器的登录地址,一般在路由器的底部铭牌上会便有该路由器的参数,包括登录地址。此处我以腾达无限路由器为例,上面标识的IP地址就是该路由器的登录地址。2找到路由器的登...

电脑无法启动windows7一键还原

恢复出厂设置方法如下:1、开机进入系统前,按F8,进入Windows7的高级启动选项,选择“修复计算机”。2、选择键盘输入方法。3、如果有管理员密码,需要输入;如果没有设置密码,直接“确定”即可。4...

流氓杀毒软件排行榜(流氓杀毒软件排行榜前十名)
流氓杀毒软件排行榜(流氓杀毒软件排行榜前十名)

360杀毒不是流氓软件。360很不错的,它的软件实用性强,而且还是永久免费的,很多人都喜欢用。第一,它是永久免费的。第二,免费不是做样子看的,它会不断地更新。第三,跟其他杀毒软件相比,360杀毒占用系统资源很少,全盘扫描也基本不占用资源。...

2026-01-21 06:37 liuian

苹果手机怎样更新最新系统(苹果手机如何更新最新版)

打开iphone手机的设置,设置里选择通用,进入软件更新,点击更新到最新系统,等新系统下载完成后,直接安装升级就可以了。iphone更新系统需要进入系统通用设置,在软件更新中就可以下载系统安装包并更新...

win7激活软件暴风激活工具(暴风激活工具激活不了win7系统怎么办)

用小马激活的,没用过暴风激活,一般常用的激活工具有:win7小马激活工具、Win7activation、windowsLoader、OEM等,根据情况的不同需要使用不同的激活软件,一般都需要多试几...

qq普通下载(手机qq普通下载)
  • qq普通下载(手机qq普通下载)
  • qq普通下载(手机qq普通下载)
  • qq普通下载(手机qq普通下载)
  • qq普通下载(手机qq普通下载)
windows10政府版(windows10政府版取消屏保)

按下Windows+R,输入“gpedit.msc”回车,在本地组策略编辑器中依次点击:计算机配置-Windows设置-安全设置-本地策略-安全选项,在右侧找到“交互式登录:无需按Ctrl+Alt+D...

win10无法识别usb设备如何解决
win10无法识别usb设备如何解决

若windows10操作系统中无法识别U盘,可尝试通过以下两种方式进行操作:方法一:打开控制面板(小图标查看)---设备管理器,展开通用串行总线控制器,右键单击设备选择“卸载”,每个设备重复以上操作。完成后,重新启动计算机,系统会自动安装...

2026-01-21 05:21 liuian

斐讯健康体脂秤app下载(斐讯健康体脂秤app下载官网)

斐讯健康app。斐讯健康是一款配合斐讯智能硬件设备使用的APP,可连接斐讯智能体脂秤S7和斐讯智能血压计,体脂秤不仅仅只是称重,更有各项「身体成分」和「健康评估」,血压计不仅仅测量血压和心率,还展示具...

粘贴复制快捷键突然不能用了

回答如下:可能是以下几种原因导致快捷键无法使用:1.键盘故障:检查键盘是否正常工作,尝试使用其他键盘或在另一台计算机上测试该键盘。2.操作系统问题:尝试重新启动计算机,或者更新操作系统以修复问题。...