ES6 Promise 扩展 always 方法详解

作者:纸飞机时间:2026-10-22 08:49:44浏览:171

本文介绍如何为 ES6 Promise 扩展 always 方法,实现无论成功或失败均执行特定逻辑(如隐藏加载状态、记录日志)。通过 es6-promise-always 库,开发者可复用 jQuery 的 always 接口,简化代码冗余,支持 Node.js 和浏览器环境。

ES6 Promise 扩展 always 方法详解

ES6 引入了 Promise 对象,成功结果在 then 中处理,失败结果在 catch 中处理。然而,有时我们需要在无论成功或失败的情况下都执行某些操作,例如隐藏加载状态或记录日志。以下以浏览器端的 AJAX 请求为例,使用基于 Promise 的 axios 库进行说明:


axios.get("/").then(()=>{
 //处理逻辑
 ...
 console.log("请求结束")
 hideLoading();
}).catch(()=>{
 console.log("请求结束")
 hideLoading();
})

这种写法显得较为冗余。每当遇到这种情况,难免会怀念 jQuery 提供的简洁接口:


$.get("/").done(()=>{
 //处理逻辑
}).always(()=>{
 console.log("请求结束")
 hideLoading();
})

es6-promise-always 正是对 ES6 功能的扩展,使其支持 always 方法,同时兼容 Node.js 和浏览器环境。

使用方法

使用方法如下:

1. 安装


npm install es6-promise-always --save

2. 引入并使用


require("es6-promise-always")
axios.get("/").then(()=>{
 //处理逻辑
}).always(()=>{
 console.log("请求结束")
 hideLoading();
})

always(data, error)

  • data:resolve 传递的数据。
  • error:reject 传递的数据。

提示

无需担心这会增加程序体积,es6-promise-always 非常轻量。在最初实现 always 时曾走错方向,但幸运的是及时纠正。GitHub 地址:https://github.com/wendux/es6-promise-always

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

作者最新文章