深入理解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 相关文章推荐
JS读取cookies信息(记录用户名)
Jan 10 Javascript
jquery文字上下滚动的实现方法
Mar 22 Javascript
ExtJS下书写动态生成的xml(兼容火狐)
Apr 02 Javascript
使图片旋转的3种解决方案
Nov 21 Javascript
浅析Bootstrip的select控件绑定数据的问题
May 10 Javascript
响应式表格之固定表头的简单实现
Aug 26 Javascript
AngularJS删除路由中的#符号的方法
Sep 20 Javascript
微信小程序 支付功能开发错误总结
Feb 21 Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
Dec 01 Javascript
详解swiper在vue中的应用(以3.0为例)
Sep 20 Javascript
Vue 用Vant实现时间选择器的示例代码
Oct 25 Javascript
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
Jan 26 Javascript
微信小程序开发之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
《PHP边学边教》(01.开篇――准备工作)
2006/12/13 PHP
发布一个用PHP fsockopen写的HTTP下载的类
2007/02/22 PHP
php设置编码格式的方法
2013/03/05 PHP
PHP实现下载断点续传的方法
2014/11/12 PHP
php关闭warning问题的解决方法
2016/05/17 PHP
php 截取中英文混合字符串的方法
2018/05/31 PHP
How to Auto Include a Javascript File
2007/02/02 Javascript
转一个日期输入控件,支持FF
2007/04/27 Javascript
javascript:void(0)的真正含义实例分析
2008/08/20 Javascript
Moment.js 不容错过的超棒Javascript日期处理类库
2012/04/15 Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
2015/12/18 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
2015/12/30 Javascript
js倒计时小实例(多次定时)
2016/12/08 Javascript
使用原生js写ajax实例(推荐)
2017/05/31 Javascript
jQuery实现一个简单的验证码功能
2017/06/26 jQuery
vuejs+element-ui+laravel5.4上传文件的示例代码
2017/08/12 Javascript
vue2.0移动端滑动事件vue-touch的实例代码
2018/11/27 Javascript
vue将后台数据时间戳转换成日期格式
2019/07/31 Javascript
解决vue中axios设置超时(超过5分钟)没反应的问题
2020/09/04 Javascript
python学习笔记:字典的使用示例详解
2014/06/13 Python
使用Python神器对付12306变态验证码
2016/01/05 Python
python实现基于SVM手写数字识别功能
2020/05/27 Python
python删除文本中行数标签的方法
2018/05/31 Python
widows下安装pycurl并利用pycurl请求https地址的方法
2018/10/15 Python
利用python实现对web服务器的目录探测的方法
2019/02/26 Python
PyQt5 多窗口连接实例
2019/06/19 Python
pycharm新建Vue项目的方法步骤(图文)
2020/03/04 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
幼儿园义卖活动方案
2014/01/17 职场文书
活动策划邀请函
2014/02/06 职场文书
酒店总经理助理职责
2014/02/12 职场文书
小学教师培训方案
2014/06/09 职场文书
党员民主生活会对照检查材料思想汇报
2014/09/28 职场文书
党委领导班子整改方案
2014/09/30 职场文书
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫
java实现面板之间切换功能
2022/06/10 Java/Android