深入理解ES6 Promise 扩展always方法


Posted in Javascript onSeptember 26, 2017

ES6添加了Promise对象,成功时在then中处理,失败则在catch中处理,但有时候,我们需要在无论成功或失败时都要做一些事,比如隐藏loading, 记录日志等等,下面我们以浏览器端ajax请求为例,我们使用axios(它是基于Promise的):

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

这样的代码, 很冗余。每到这个时候都有点怀念jQuery:

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

es6-promise-always正是对ES6的功能做了一个扩充,使其支持always,并同时支持node和browser.

使用

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的数据。

Tips

不要担心这个会让你的程序变胖!es6-promise-always非常小。刚开始实现时always时,走错了方向,辛好迷途知返。github地址:https://github.com/wendux/es6-promise-always

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

Javascript 相关文章推荐
jquery根据name属性查找的小例子
Nov 21 Javascript
jQuery实现列表自动滚动循环滚动展示新闻
Aug 22 Javascript
JavaScript将数字转换成大写中文的方法
Mar 23 Javascript
学习JavaScript设计模式(单例模式)
Nov 26 Javascript
jQuery抛物线运动实现方法(附完整demo源码下载)
Jan 08 Javascript
高效的jQuery代码编写技巧总结
Feb 22 Javascript
微信小程序之蓝牙的链接
Sep 26 Javascript
深入探讨JavaScript的最基本部分之执行上下文
Feb 12 Javascript
Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现
Apr 01 Javascript
解决vue单页面应用中动态修改title问题
Jun 09 Javascript
vue项目中微信登录的实现操作
Sep 08 Javascript
Vue实现图书管理小案例
Dec 03 Vue.js
微信小程序开发之IOS和Android兼容的问题
Sep 26 #Javascript
Thinkphp5微信小程序获取用户信息接口的实例详解
Sep 26 #Javascript
微信小程序url与token设置详解
Sep 26 #Javascript
微信小程序之滚动视图容器的实现方法
Sep 26 #Javascript
微信小程序开发之好友列表字母列表跳转对应位置
Sep 26 #Javascript
深入理解Vuex 模块化(module)
Sep 26 #Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
Sep 26 #Javascript
You might like
smarty的保留变量问题
2008/10/23 PHP
用来解析.htgroup文件的PHP类
2012/09/05 PHP
php数组去重复数据示例
2014/02/25 PHP
在PHP中运行Linux命令并启动SSH服务的例子
2014/06/12 PHP
自编函数解决pathinfo()函数处理中文问题
2014/11/03 PHP
prototype 源码中文说明之 prototype.js
2006/09/22 Javascript
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
2014/08/15 Javascript
使用impress.js制作幻灯片
2015/09/09 Javascript
js实现新浪微博首页效果
2015/10/16 Javascript
Select2.js下拉框使用小结
2016/10/24 Javascript
实现easyui的datagrid导出为excel的示例代码
2016/11/10 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
详解webpack解惑:require的五种用法
2017/06/09 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
2018/02/03 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
2018/10/26 Javascript
vue 本地服务不能被外部IP访问的完美解决方法
2018/10/29 Javascript
ES6 如何改变JS内置行为的代理与反射
2019/02/11 Javascript
微信小程序实现的一键拨号功能示例
2019/04/24 Javascript
Node.js 实现抢票小工具 & 短信通知提醒功能
2019/10/22 Javascript
vue点击按钮实现简单页面的切换
2020/09/08 Javascript
Python如何基于smtplib发不同格式的邮件
2019/12/30 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
2020/04/14 Python
vscode写python时的代码错误提醒和自动格式化的方法
2020/05/07 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
2020/05/19 Python
CSS3混合模式mix-blend-mode/background-blend-mode简介
2018/03/15 HTML / CSS
利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位
2013/01/23 HTML / CSS
英文自荐信
2013/12/19 职场文书
劲霸男装广告词
2014/03/21 职场文书
机械制造专业大学生自我鉴定
2014/09/19 职场文书
亚布力滑雪场导游词
2015/02/09 职场文书
班主任经验交流心得体会
2015/11/02 职场文书
《成长的天空》读后感3篇
2019/12/06 职场文书
python 开心网和豆瓣日记爬取的小爬虫
2021/05/29 Python
详解java如何集成swagger组件
2021/06/21 Java/Android
vue项目打包后路由错误的解决方法
2022/04/13 Vue.js
SQL Server删除表中的重复数据
2022/05/25 SQL Server