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

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

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


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

相关推荐

xp系统备份及还原方法(xp系统备份怎么操作)

1,先进入BIOS,设置带PE的光盘或者带PE的U盘优先启动;2,在光盘启动时,选择启动PE;3,启动GHOST;4,第一个GHOST对话框,直接OK,跳过;5,点LOCAL-PARTITION-...

手机与平板电脑微信同步怎么弄

1.在ipad上打开微信。2.点击同时在手机和ipad上使用。3.在手机再登录微信,然后使用扫一扫扫描平板上面微信的二维码。4.手机微信,确认登录。5.完成登录啦,这样子就同时在手机和ipad上使用,...

无线网络密码怎么破解啊(自己无线网络密码在哪里查看密码)

1、从网上下载wifi万能钥匙软件,安装在手机上,确保自己的手机开通移动数据流量,因为在破解的时候要用到网络2、打开wifi万能钥匙软件,到软件主界面,显示手机所在地附近的wifi信号3...

苹果公司的发展历程(苹果公司发展简史)

我老家的院子里曾经有一颗苹果树,那是很多年前父亲种下的我还记的拿住苹果树第一次开花,我们一家人都很兴奋,没事就在树下转转,不时仰望枝叶间盛开。那时我还小,不知道南方不宜种苹果树。以为凡是果树只要开花,...

电脑截图键盘快捷键ctrl加什么

1、“ctrl”加“PrtScSysRq”键,或者直接按下“PrtScSysRq”键也是可以截图的。2、windows10截图快捷键:ctrl+shift(上档键)+A。3.直接win+...

directx11是什么显卡(directx11显卡什么等级)

要查看显卡是否支持DirectX11,请遵循以下步骤:按下Windows键+R打开“运行”命令窗口。输入“dxdiag”并按Enter键。在“DirectX诊断工具”窗口中,...

文件服务器搭建与使用详解(文件服务器搭建教程)

搭建公网文件服务器需要考虑多个方面,包括服务器的硬件配置、操作系统选择、文件共享协议设置、安全设置等。以下是一般的搭建步骤:硬件配置:选择一台性能稳定的服务器,确保有足够的存储空间和网络带宽。操作系统...

ie浏览器未响应闪退(ie浏览器未响应闪退什么原因)

ie打不开闪退的解决办法:方案一:浏览器修复方案二:关闭系统自带的墙和第三方安全软件的防火墙设置关闭Windows自带的防火墙及软件防火墙(部分软件运行时会被防火墙拦截,导致无法打开)1.点击开始按钮...

怎么判断u盘是fat32(怎么判断u盘是sdb几)

打开我的电脑,在内存卡盘符点鼠标右键,选择属性,里面就有说你的是不是FAT32,如果不是,可以在内存卡盘符上点格式化,里面选择FAT32,然后格式化就行了注:格式化后,你的内存卡里的东西都会消失,请在...

电脑开不了机也关不了机(电脑开不了机又关不了)

1.电脑死机后,按组合键Ctrl+Alt+Del,在弹出的界面中选择任务管理器。2.进入任务管理器后,可以看到电脑正在运行的程序。3.将运行的程序全部关闭,只剩桌面,电脑就可以反应过来,停止死机现象。...

4000左右组装电脑配置清单(4000以内组装电脑配置)
4000左右组装电脑配置清单(4000以内组装电脑配置)

最近给朋友装的主机可以参考下:近几年来随着amd的奋起猛追,R52600、R53600超高性价比,Intel在民用桌面处理器上优势不再。为了面对锐龙系列对市场的不断蚕食,Intel在历时许久后,又推出了一款屏蔽集显的新i59400F...

2026-01-23 06:21 liuian

不小心转换成动态磁盘(不小心转换成动态磁盘还能重做系统吗)

  1、打开【计算机管理】窗口,在控制台树中选择【磁盘管理】结点;  2、右击要进行转换的动态磁盘上的各个部分区,执行【删除卷】命令,将所有分区全部删除;  3、在刚才删除所有分区的磁盘上右击,xp系...

电脑没有声音怎么办win10

1、在Windows10系统桌面,右键点击左下角的开始按钮,在弹出菜单中选择“设置”菜单项。2、接下来就会打开Windows10的设置窗口,在窗口中我们点击系统图标。3、在打开的系统设置窗口中,点击左...

在哪里找(在哪里找顺风车)

1:打开手机下载好的今日头条APP,进入首页后找到我的一栏,点击即可进入2:在进入的个人菜单页面内找到右上角设置按钮,点击后即可下一界面。3:在进入的个人设置界面内找到账户与安全一栏,点击进入。4:在...

win7配置windows update卡住

Windows7电脑一直卡在配置更新,如果你遇到这种情况可能是因为你电脑的温度斯系统出现了版本过低或者是运行异常的错误,所以你应该去你的电脑维修商店,找到专业的维修人员,帮你升级一下你电脑的Wind...