关于 Promise.prototype.finally() 的实现与使用

在 JavaScript 中,Promise 是一种非常常用的异步编程方式,它能够帮助我们更好地处理异步操作。Promise 的 then() 方法和 catch() 方法已经被广泛使用,但是在 ES2018 中,Promise 新增了一个 finally() 方法,它可以让我们更好地处理 Promise 的状态和结果。

Promise.prototype.finally() 的作用

Promise.prototype.finally() 方法用于指定不管 Promise 对象最后状态如何,都会执行的操作。它与 Promise.prototype.then() 方法和 Promise.prototype.catch() 方法不同的是,它不管 Promise 对象最后的状态是 fulfilled、rejected 还是 pending,都会执行指定的回调函数。

Promise.prototype.finally() 的实现

Promise.prototype.finally() 方法的实现并不难,我们可以通过 Promise.prototype.then() 方法和 Promise.prototype.catch() 方法的链式调用来实现。具体实现代码如下:

------------------------- - ------------------ -
  --- - - -----------------
  ------ ----------
    ----- -- ----------------------------- -- -------
    ------ -- ----------------------------- -- - ----- ------ --
  --
--

在上面的代码中,我们首先获取了当前 Promise 对象的构造函数,然后在 Promise.prototype.then() 方法中分别处理了 Promise 对象的 fulfilled 和 rejected 状态,并在回调函数中执行了 finally() 方法指定的操作。

Promise.prototype.finally() 的使用

使用 Promise.prototype.finally() 方法非常简单,我们只需要在 Promise 对象的链式调用中添加 finally() 方法即可。下面是一个简单的示例代码:

-----------------------------------------------------
  -------------- -- -
    ------------------------ ----------
    ------ ----------------
  --
  ---------- -- -
    -------------------- ------
  --
  ------------ -- -
    ----------------------- -------
  --
  ----------- -- -
    -------------------------
  ---

在上面的示例代码中,我们使用了 fetch() 方法获取了一个 JSON 数据,并对其进行了解析和处理。在 Promise 对象的链式调用中,我们添加了一个 finally() 方法,用于在 Promise 对象执行结束后输出一条日志信息。

总结

Promise.prototype.finally() 方法是 Promise 对象的一个非常有用的方法,它可以让我们更好地处理 Promise 的状态和结果。在使用 Promise 时,我们应该尽可能地使用 finally() 方法来确保代码的正确性和可读性。在实现 Promise.prototype.finally() 方法时,我们可以通过 Promise.prototype.then() 方法和 Promise.prototype.catch() 方法的链式调用来实现,代码并不难写。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/660153e4d10417a222c8340a


猜你喜欢

  • ES11:遵循 JavaScript 全局环境(globalThis)约定的理由

    在 JavaScript 中,全局环境是一个非常重要的概念,它指的是全局作用域的上下文环境。在浏览器中,全局环境是 window 对象,在 Node.js 中,全局环境是 global 对象。

    7 个月前
  • 学习 ES10,理解 Array.sort 的排序规则

    ES10 是 ECMAScript 的第十个版本,它为前端开发带来了许多新特性和语法糖,其中包括 Array.sort 的排序规则的更新。Array.sort 是 JavaScript 中常用的数组排...

    7 个月前
  • Next.js 踩坑实录:组件引入时,找不到文件!

    前言 Next.js 是一款基于 React 的服务端渲染框架,它的出现让前端开发者可以更加方便地实现服务端渲染。在使用 Next.js 进行开发的过程中,我们可能会遇到一些问题,其中之一就是组件引入...

    7 个月前
  • 如何在 Angular 中使用 JavaScript 时间

    在 Angular 中,我们经常需要处理时间,比如显示当前时间、计算时间差等等。而 JavaScript 中的时间对象可以帮助我们完成这些功能。本文将介绍如何在 Angular 中使用 JavaScr...

    7 个月前
  • ES6 和 ES7 常见问题排查之路

    随着前端技术不断发展,ES6 和 ES7 成为了前端开发中不可或缺的一部分。然而,由于新特性的引入,也带来了一些常见问题。在本文中,我们将探讨 ES6 和 ES7 中的一些常见问题,并提供解决方案和示...

    7 个月前
  • 在使用 VS Code 时配置 ESLint

    ESLint 是一个 JavaScript 代码检查工具,它可以帮助我们在编写代码的过程中发现潜在的问题,从而提高代码的质量和可读性。在使用 VS Code 进行前端开发时,我们可以通过配置 ESLi...

    7 个月前
  • 如何使用 Koa 和 Passport.js 实现基于令牌的身份验证

    身份验证是现代 Web 应用程序的一个重要组成部分,它可以确保只有经过身份验证的用户才能访问受保护的资源。在本文中,我们将介绍如何使用 Koa 和 Passport.js 实现基于令牌的身份验证,这是...

    7 个月前
  • Docker 容器中使用 MySQL 客户端时出现 “Lost connection to MySQL server” 解决方法

    最近,我在使用 Docker 容器中的 MySQL 客户端时,遇到了一个常见的问题:在连接 MySQL 服务器时,会出现 “Lost connection to MySQL server” 的错误提示...

    7 个月前
  • 如何使用 Fastify 框架实现 WebHooks 自动化任务?

    介绍 Fastify 是一个快速、低开销的 Node.js Web 框架,具有高性能、低内存占用和可扩展性等优点。本文将介绍如何使用 Fastify 框架实现 WebHooks 自动化任务,包括如何建...

    7 个月前
  • 如何使用 Enzyme 检查 React 组件的 Props 和 State

    在 React 开发中,我们经常需要检查组件的 Props 和 State 是否正确,以确保组件的行为符合预期。而 Enzyme 是一个非常流行的测试工具,可以帮助我们方便地检查组件的 Props 和...

    7 个月前
  • 在 Kubernetes 上搭建高可靠、高可用的 MongoDB

    前言 MongoDB 是一款非常流行的 NoSQL 数据库,因其高性能、高可扩展性、高可靠性等特点,被广泛应用于各种场景。而 Kubernetes 则是一款流行的容器编排平台,可以帮助我们快速、高效地...

    7 个月前
  • 如何使用 GraphQL 和 Express.js 构建 Node API

    在前端开发中,构建 API 是一个非常重要的任务。随着现代 Web 应用程序的复杂性不断增加,API 设计和实现变得越来越重要。GraphQL 是一种用于构建 API 的新兴技术,它能够提供更好的开发...

    7 个月前
  • 如何使用 Node.js 实现 WebSocket Chat 应用?

    WebSocket 是一种在客户端和服务器之间建立实时、双向通信的协议。它能够让服务器主动向客户端推送数据,而不需要客户端像传统的 HTTP 请求那样不断地轮询。在前端开发中,使用 WebSocket...

    7 个月前
  • 自定义元素,开始学习 Web 组件

    随着 Web 开发技术的不断发展,越来越多的前端开发者开始关注 Web 组件的开发。而在 Web 组件的开发中,自定义元素是一个非常重要的概念。本文将为大家介绍自定义元素的相关知识,并提供一些示例代码...

    7 个月前
  • JavaScript ES11:根据异步操作停止(AbortSignal)详解

    在现代 Web 应用程序中,异步操作是非常常见的。比如,我们可能会使用 fetch API 来获取数据,或者使用 WebSocket API 来建立实时连接。通常情况下,我们希望在这些异步操作执行期间...

    7 个月前
  • Tailwind 中如何设置响应式背景图片

    介绍 Tailwind 是一款流行的 CSS 框架,它的设计理念是通过类名来构建样式,而不是手写 CSS。这种方式可以提高开发效率,并且让代码更易于维护。在 Tailwind 中,可以很容易地设置背景...

    7 个月前
  • CSS Grid 布局中如何使用 justify-content 和 align-items 控制单元格的对齐方式?

    在 CSS Grid 布局中,我们可以使用 justify-content 和 align-items 属性来控制单元格的水平和垂直对齐方式。这两个属性都是用来设置容器内子元素的对齐方式,但是它们的作...

    7 个月前
  • Hapi 框架部署在阿里云 ECS 上遇到的问题及解决方法

    前言 在实际项目中,我们经常需要将前端代码部署在服务器上,以便用户可以通过互联网访问我们的应用。而阿里云 ECS 是一种常见的云服务器,拥有高性能、高可靠性、安全可靠、易扩展等优点,因此被广泛应用于生...

    7 个月前
  • Angular Material 数据表格的使用指南

    简介 Angular Material 是一个 UI 组件库,提供了丰富的 UI 组件和样式,方便开发者快速构建美观的 Web 应用。其中数据表格是 Angular Material 中最常用的组件之...

    7 个月前
  • Material Design:如何实现带有角标的 TabLayout

    在移动端应用程序中,TabLayout 是一种非常常见的 UI 组件。它可以帮助用户快速地浏览和访问不同的功能模块,提高用户体验。而带有角标的 TabLayout 可以展示一些重要的数字或者标记,更加...

    7 个月前

相关推荐

    暂无文章