深入理解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 相关文章推荐
关于html+ashx开发中几个问题的解决方法
Jul 18 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
Oct 15 Javascript
js中取得变量绝对值的方法
Jan 03 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
Apr 20 Javascript
JavaScript中数组去除重复的三种方法
Apr 22 Javascript
AngularJS实用开发技巧(推荐)
Jul 13 Javascript
Vue实现双向数据绑定
May 03 Javascript
vue2.0 elementUI制作面包屑导航栏
Feb 22 Javascript
移动端(微信等使用vConsole调试console的方法
Mar 05 Javascript
vue实现图片预览组件封装与使用
Jul 13 Javascript
jQuery实现图片下载代码
Jul 18 jQuery
解决vant title-active-color与title-inactive-color不生效问题
Nov 03 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数据库类
2009/05/27 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
2013/09/28 PHP
简单的php文件上传(实例)
2013/10/27 PHP
php中引用&的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
使用PHP开发留言板功能
2019/11/19 PHP
关于JS中的闭包浅谈
2013/08/23 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
2013/11/28 Javascript
JS模拟bootstrap下拉菜单效果实例
2016/06/17 Javascript
JavaScript评论点赞功能的实现方法
2017/03/13 Javascript
bootstrap paginator分页插件的两种使用方式实例详解
2017/11/14 Javascript
vue实现可视化可拖放的自定义表单的示例代码
2019/03/20 Javascript
如何优雅地取消 JavaScript 异步任务
2020/03/22 Javascript
Python的爬虫包Beautiful Soup中用正则表达式来搜索
2016/01/20 Python
详解K-means算法在Python中的实现
2017/12/05 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
2018/03/14 Python
python数据处理之如何选取csv文件中某几行的数据
2019/09/02 Python
Python爬虫爬取博客实现可视化过程解析
2020/06/29 Python
python图片验证码识别最新模块muggle_ocr的示例代码
2020/07/03 Python
Python unittest如何生成HTMLTestRunner模块
2020/09/08 Python
python 牛顿法实现逻辑回归(Logistic Regression)
2020/10/15 Python
使用CSS3制作一个简单的Chrome模拟器
2015/07/15 HTML / CSS
HTML5触摸事件演化tap事件介绍
2016/03/25 HTML / CSS
耐克美国官网:Nike.com
2016/08/01 全球购物
财务会计实习报告体会
2013/12/20 职场文书
公司年会晚宴演讲稿
2014/01/06 职场文书
好邻里事迹材料
2014/01/16 职场文书
三分钟演讲稿事例
2014/03/03 职场文书
聘任书模板
2014/03/29 职场文书
个人欠款协议书范本2014
2014/11/02 职场文书
升职自我推荐信范文
2015/03/25 职场文书
2016高校自主招生自荐信范文
2016/01/28 职场文书
学校趣味运动会开幕词
2016/03/04 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书
redis 存储对象的方法对比分析
2021/08/02 Redis
Fluentd搭建日志收集服务
2022/09/23 Servers
Java实现贪吃蛇游戏的示例代码
2022/09/23 Java/Android