深入理解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方法和技巧大全
Dec 27 Javascript
Javascript延迟执行实现方法(setTimeout)
Dec 30 Javascript
文本域中换行符的替换示例
Mar 04 Javascript
JS组件Bootstrap Table表格多行拖拽效果实现代码
Dec 08 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(一)
Feb 16 Javascript
js控制TR的显示隐藏
Mar 04 Javascript
基于three.js编写的一个项目类示例代码
Jan 05 Javascript
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
Oct 09 Javascript
Three.JS实现三维场景
Dec 30 Javascript
JavaScript遍历数组的三种方法map、forEach与filter实例详解
Feb 27 Javascript
详解从vue-loader源码分析CSS Scoped的实现
Sep 23 Javascript
JavaScript 防篡改对象的用法示例
Apr 24 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
基于simple_html_dom的使用小结
2013/07/01 PHP
PHP字符串word末字符实现大小写互换的方法
2014/11/10 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
Javascript学习笔记5 类和对象
2010/01/11 Javascript
JS的反射问题
2010/04/07 Javascript
关于extjs treepanel复选框选中父节点与子节点的问题
2013/04/02 Javascript
让jQuery Mobile不显示讨厌loading界面的方法
2014/02/19 Javascript
ajax的分页查询示例(不刷新页面)
2017/01/11 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
2017/04/25 Javascript
jQuery extend()详解及简单实例
2017/05/06 jQuery
BootStrap表单时间选择器详解
2017/05/09 Javascript
AngularJS select设置默认值的实现方法
2017/08/25 Javascript
vue.js动画中的js钩子函数的实现
2018/07/06 Javascript
使用Python的内建模块collections的教程
2015/04/28 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
2017/07/28 Python
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
2017/08/07 Python
python 保存float类型的小数的位数方法
2018/10/17 Python
django主动抛出403异常的方法详解
2019/01/04 Python
Python中super函数用法实例分析
2019/03/18 Python
python设置环境变量的作用整理
2020/02/17 Python
Pycharm配置PyQt5环境的教程
2020/04/02 Python
python 如何将office文件转换为PDF
2020/09/22 Python
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
“型”走纽约上东区:Sam Edelman
2017/04/02 全球购物
RetroStage德国:复古服装
2019/02/03 全球购物
天游软件面试
2013/11/23 面试题
说一下Linux下有关用户和组管理的命令
2016/01/04 面试题
Java Servlet的主要功能和作用是什么
2014/02/14 面试题
公务员培训自我鉴定
2013/09/19 职场文书
入党积极分子介绍信
2014/01/17 职场文书
优秀员工评语
2014/02/10 职场文书
《十六年前的回忆》教学反思
2014/02/14 职场文书
采购经理岗位职责
2014/02/16 职场文书
党员批评与自我批评
2014/10/15 职场文书
幼儿园端午节活动总结
2015/05/05 职场文书
保外就医申请书范文
2015/08/06 职场文书