深入理解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 学习书 推荐
Jun 13 Javascript
JavaScript 设计模式学习 Factory
Jul 29 Javascript
使用jquery mobile做幻灯播放效果实现步骤
Jan 04 Javascript
用innerhtml提高页面打开速度的方法
Aug 02 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
Feb 10 Javascript
jquery实现公告翻滚效果
Feb 27 Javascript
javascript处理a标签超链接默认事件的方法
Jun 29 Javascript
JS与Ajax Get和Post在使用上的区别实例详解
Jun 08 Javascript
jQuery之简单的表单验证实例
Jul 07 Javascript
JS中闭包的经典用法小结(2则示例)
Dec 28 Javascript
JS模拟实现京东快递单号查询
Nov 30 Javascript
JavaScript实现通讯录功能
Dec 27 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
常用星际术语索引(新手指南)
2020/03/04 星际争霸
php skymvc 一款轻量、简单的php
2011/06/28 PHP
php缓存技术详细总结
2013/08/07 PHP
php实现高效获取图片尺寸的方法
2014/12/12 PHP
tp5实现微信小程序多图片上传到服务器功能
2018/07/16 PHP
PHP dirname简单使用代码实例
2020/11/13 PHP
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
2012/01/08 Javascript
使用jquery清空、复位整个输入域
2015/04/02 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
2016/10/10 Javascript
socket.io实现在线群聊功能
2017/04/07 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
使用DataTable插件实现异步加载数据
2017/11/19 Javascript
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
15分钟上手vue3.0(小结)
2020/05/20 Javascript
10分钟学会js处理json的常用方法
2020/12/06 Javascript
[56:42]完美世界DOTA2联赛循环赛 Matador vs Forest 第二场 11.06
2020/11/06 DOTA
python脚本实现分析dns日志并对受访域名排行
2014/09/18 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
2016/03/13 Python
Python中属性和描述符的正确使用
2016/08/23 Python
Python实现PS图像明亮度调整效果示例
2018/01/23 Python
python 限制函数调用次数的实例讲解
2018/04/21 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
Python实现微信小程序支付功能
2019/07/25 Python
在Django admin中编辑ManyToManyField的实现方法
2019/08/09 Python
python爬虫爬取笔趣网小说网站过程图解
2019/11/18 Python
Python 实现Numpy中找出array中最大值所对应的行和列
2019/11/26 Python
python创建子类的方法分析
2019/11/28 Python
python通过对字典的排序,对json字段进行排序的实例
2020/02/27 Python
Django模板获取field的verbose_name实例
2020/05/19 Python
诺思信科技(南京)有限公司.NET笔试题答案
2013/07/06 面试题
软件测试面试题
2014/01/05 面试题
大学生期末自我鉴定
2014/02/01 职场文书
安全生产责任书
2014/03/12 职场文书
禁烟标语大全
2014/06/11 职场文书
进行数据处理的6个 Python 代码块分享
2022/04/06 Python