深入理解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 相关文章推荐
Some tips of wmi scripting in jscript (1)
Apr 03 Javascript
动态添加js事件实现代码
Mar 12 Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
Jun 01 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
Jun 05 Javascript
Sublime Text 3常用插件及安装方法
Dec 16 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
May 18 Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
May 27 Javascript
详解node.js搭建代理服务器请求数据
Apr 08 Javascript
JavaScript数据结构之双向链表和双向循环链表的实现
Nov 28 Javascript
详解vue 自定义marquee无缝滚动组件
Apr 09 Javascript
详解Webpack4多页应用打包方案
Jul 16 Javascript
利用javaScript处理常用事件详解
Apr 14 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
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
2013/06/01 PHP
php阻止页面后退的方法分享
2014/02/17 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
2014/07/28 PHP
PHP中通过fopen()函数访问远程文件示例
2014/11/18 PHP
PHP获取当前日期和时间及格式化方法参数
2015/05/11 PHP
laravel 多图上传及图片的存储例子
2019/10/14 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
jQuery 插件 将this下的div轮番显示
2009/04/09 Javascript
Javascript String.replace的妙用
2009/09/08 Javascript
js 自定义的联动下拉框
2010/02/07 Javascript
简单常用的幻灯片播放实现代码
2013/09/25 Javascript
JavaScript的Date()方法使用详解
2015/06/09 Javascript
JavaScript检测上传文件大小的方法
2015/07/22 Javascript
javascript手风琴下拉菜单实现代码
2015/11/12 Javascript
JS运动特效之链式运动分析
2018/01/24 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
2018/02/03 Javascript
Javascript实现鼠标移入方向感知
2020/06/24 Javascript
Python读写文件方法总结
2015/06/09 Python
基于Python实现通过微信搜索功能查看谁把你删除了
2016/01/27 Python
Python中扩展包的安装方法详解
2017/06/14 Python
python 将日期戳(五位数时间)转换为标准时间
2019/07/11 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
python环境下安装opencv库的方法
2020/03/05 Python
Python虚拟环境venv用法详解
2020/05/25 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
2020/06/11 Python
Python2与Python3关于字符串编码处理的差别总结
2020/09/07 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
2021/02/04 Python
Nike挪威官网:Nike.com (NO)
2018/11/26 全球购物
MYPROTEIN澳大利亚官方网站:欧洲运动营养品牌
2019/06/26 全球购物
茶叶店创业计划书范文
2014/01/19 职场文书
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
党员民主生活会个人整改措施材料
2014/09/16 职场文书
办理信用卡工作证明
2014/09/30 职场文书
python实现会员信息管理系统(List)
2022/03/18 Python
浅析Python OpenCV三种滤镜效果
2022/04/11 Python
Python3使用Qt5来实现简易的五子棋小游戏
2022/05/02 Python