深入理解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 相关文章推荐
javascript学习(二)javascript常见问题总结
Jan 02 Javascript
jquery bind(click)传参让列表中每行绑定一个事件
Aug 06 Javascript
jQuery判断对象是否存在的方法
Feb 05 Javascript
jQuery EasyUI 布局之动态添加tabs标签页
Nov 18 Javascript
Angular2学习教程之组件中的DOM操作详解
May 28 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
Jul 31 Javascript
深入理解React高阶组件
Sep 28 Javascript
JS正则表达式完美实现身份证校验功能
Oct 18 Javascript
AngularJS模态框模板ngDialog的使用详解
May 11 Javascript
微信小程序自定义弹窗实现详解(可通用)
Jul 04 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
May 31 Javascript
vue 遮罩层阻止默认滚动事件操作
Jul 28 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
文章推荐系统(三)
2006/10/09 PHP
解决phpmyadmin中文乱码问题。。。
2007/01/18 PHP
php $_SERVER["REQUEST_URI"]获取值的通用解决方法
2010/06/21 PHP
php按百分比生成缩略图的代码分享
2014/05/10 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
php 猴子摘桃的算法
2017/06/20 PHP
CodeIgniter框架钩子机制实现方法【hooks类】
2018/08/21 PHP
PHP isset()及empty()用法区别详解
2020/08/29 PHP
js获取IFRAME当前的URL的方法
2013/11/13 Javascript
动态读取JSON解析键值对的方法
2014/06/03 Javascript
bootstrap网格系统使用方法解析
2017/01/13 Javascript
vue.js实例对象+组件树的详细介绍
2017/10/20 Javascript
详解react-native WebView 返回处理(非回调方法可解决)
2018/02/27 Javascript
一起写一个即插即用的Vue Loading插件实现
2019/10/31 Javascript
JS实现简单打字测试
2020/06/24 Javascript
uni-app实现获取验证码倒计时功能
2020/11/01 Javascript
[54:53]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第二场
2014/05/23 DOTA
[01:06]DOTA2小知识课堂 Ep.01 TP出门不要忘记帮队友灌瓶哦
2019/12/05 DOTA
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
2013/11/28 Python
Python实现将SQLite中的数据直接输出为CVS的方法示例
2017/07/13 Python
python中装饰器级连的使用方法示例
2017/09/29 Python
人机交互程序 python实现人机对话
2017/11/14 Python
利用python将图片版PDF转文字版PDF
2019/05/03 Python
Docker如何部署Python项目的实现详解
2020/10/26 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
2020/11/05 Python
Python eval函数介绍及用法
2020/11/09 Python
canvas实现俄罗斯方块的方法示例
2018/12/13 HTML / CSS
H5 canvas中width、height和style的宽高区别详解
2018/11/02 HTML / CSS
SCDKey德国:全球领先的数字游戏市场
2019/04/09 全球购物
保安拾金不昧表扬信
2014/01/15 职场文书
服务质量承诺书
2014/03/27 职场文书
项目投资意向书
2014/04/01 职场文书
国家税务局干部作风整顿整改措施
2014/09/18 职场文书
甜品店创业计划书
2014/09/21 职场文书
上诉状格式
2015/05/23 职场文书
安全教育培训心得体会
2016/01/15 职场文书