本文介绍如何为 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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。