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

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

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


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

相关推荐

路由器官网登录入口tenda(路由器官网登录入口密码)

  步骤1:连接硬件  1、电话线上网:请准备2根较短的网线,一根网线用来连接ADSLModem(猫)与腾达837R路由器的WAN接口;另一根网线用来连接腾达837R路由器上的任意一个LAN(1/2...

win10录屏快捷键是哪个(win10录屏快捷键是哪个键)

如果没有修改录屏快捷键,录屏win10快捷键是【Win+Alt+G】,可以使用快捷键录屏。电脑自带的录屏功能操作步骤如下:演示机型:戴尔成就13.3系统版本:Windows10软件版本:XboxG...

电脑桌面没有图标怎么办(电脑桌面没有图标怎么修复)

电脑桌面没有图标,可能是由于多种原因造成的。首先,可能是由于桌面上的图标被隐藏了,这时你可以通过在桌面空白处右键点击“查看”-“显示桌面图标”来恢复图标的显示。另外,也有可能是由于桌面上的文件被删除或...

系统软件主要包括哪四个(系统软件主要包括哪五个)

计算机是由硬件系统(hardwaresystem)和软件系统(softwaresystem)两部分组成的。1、传统电脑系统的硬体单元一般可分为输入单元、输出单元、算术逻辑单元、控制单元及记忆单元...

电脑任务栏不显示了怎么办(电脑任务栏不显示图标怎么办)
  • 电脑任务栏不显示了怎么办(电脑任务栏不显示图标怎么办)
  • 电脑任务栏不显示了怎么办(电脑任务栏不显示图标怎么办)
  • 电脑任务栏不显示了怎么办(电脑任务栏不显示图标怎么办)
  • 电脑任务栏不显示了怎么办(电脑任务栏不显示图标怎么办)
电脑桌面壁纸高清图片全屏(电脑桌面壁纸图片简约)

如果您的电脑壁纸不是全屏的,可以按照以下步骤进行调整:找到您想要设置为壁纸的图片,右键单击并选择“设置为桌面背景”。如果您的图片尺寸较小,可能会出现不占满屏幕的情况。此时,您可以右键单击桌面,选择“个...

台式电脑显示屏亮度怎么调暗

  1、我们先要找到自己的显示器上,这个单独的键,一般是在显示器的右下角,也有可能是在后面的。大家自己找一下,我这个是在右下角的。电脑显示器调节屏幕亮度  2、我们按一下这个键,调出屏幕菜单,从左往右...

w7系统摄像头在哪里打开(win7系统摄像头怎么调出来)

要调出Win7摄像头,可以按照以下步骤操作:确保摄像头已经连接到计算机,并且正常工作。点击开始菜单,选择控制面板。在控制面板中,找到并点击“硬件和声音”。在硬件和声音页面中,找到并点击“设备和打印机”...

台式电脑屏幕分辨率怎么调(台式电脑的分辨率怎么调)

显示器对比度一般可设置在80-100。亮度一般设置在60-80,过亮易造成眼睛疲劳,也使荧光粉过早老化。如果在不用的时候,一定要关闭显示器或者降低显示器的显示亮度,否则时间长了,就会导致内部烧坏或者老...

正版系统安装(正版系统安装不了软件)

以windows7操作系统为例1、将windows7原版操作系统解压至D盘;2、打开解压的windows7文件夹,然后选择点击setup.exe进行下一步;3、打开安装向导,点击“现在安装”;4、安装...

win10企业版英文(win10企业版英文改中文版)

win10专业版的英文全称是Windows10Professional1。虽然官网和其他渠道没有提供独立的win10专业版版本下载,但是用户下载的win10专业版系统名称基本都是Windows1...

hp驱动安装(hp驱动安装 检测到新打印机)

惠普官方的标准操作:HPM126A安装驱动步骤:如果已经安装过,并没有成功,如下处理1:先删掉打印任务,再删掉打印机2:控制面板---程序----卸载打印驱动和scanto。重启计算机。3:不要...

字体如何安装(字体如何安装在电脑上)

回答如下:1.首先,从互联网上下载所需的字体文件(通常是.ttf或.otf格式)。2.将下载的字体文件拷贝到手机的存储卡或内存中的任意位置。3.打开手机的设置界面,找到“字体大小和样式”选项。4...

hp1020plus驱动支持win10(hp1020plus驱动怎么安装)

一、下载驱动:①到惠普官网,输入打印机型号作为关键词搜索一下。②找到之后,点选操作系统(还分32位和64位)。③保存到操作系统的非系统盘(比如D盘)。二、安装打印机步骤:①插上打印机电源线,按下开关。...

游戏电脑笔记本品牌排行榜(游戏笔记本电脑品牌有哪些)
  • 游戏电脑笔记本品牌排行榜(游戏笔记本电脑品牌有哪些)
  • 游戏电脑笔记本品牌排行榜(游戏笔记本电脑品牌有哪些)
  • 游戏电脑笔记本品牌排行榜(游戏笔记本电脑品牌有哪些)
  • 游戏电脑笔记本品牌排行榜(游戏笔记本电脑品牌有哪些)