axios简单实现小程序延时loading指示


Posted in Javascript onJuly 30, 2018

axios简单实现小程序延时loading指示

axios简单实现小程序延时loading指示

小程序和小游戏的wx.showLoading方法相信大家都不会陌生,但是怎样处理loading才能又更好的用户体验呢?

假设需求如下,1秒类请求没有相应,才弹出loading,否则不弹出,请求错误时,弹出toast。

配合axios实现如下:

1.在状态管理部分存储loading状态

export const loadingStatus$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false)

axios.interceptors.request.use(
 (config: any) => {
  loadingStatus$.next(true)
  return config
 },
 (error: any) => {
  return Promise.reject(error)
 },
)

axios.interceptors.response.use(
 (response: any) => {
  loadingStatus$.next(false)
  return response.data
 },
 (error: any) => {
  loadingStatus$.next(false)
  wx.showToast({ title: 'something wrong happened, please try it later' })
  return Promise.reject(error)
 },
)

2.在应用启动时订阅

let timer: any = 0
loadingStatus$
.pipe(
 pairwise(),
 filter((res: Array<boolean>) => {
  if (res[0] !== res[1]) {
   return true
  } else {
   return false
  }
 }),
 map((res: Array<boolean>) => {
  return res[1]
 }),
)
.subscribe((res: boolean) => {
 // once changed, value must be distinct
 if (timer === 0) {
  timer = setTimeout(() => {
   wx.showLoading({ title: 'loading...' })
  }, 1000)
 } else {
  clearTimeout(timer)
  timer=0
  wx.hideLoading()
 }
})

感觉配合rx,很多复杂功能都能很简单地实现,另外这个功能会伴随整个应用周期,所以unsbscribe可以不用太在意。(除非有其他的bad effect,请告诉我)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javaScript - 如何引入js代码
Mar 09 Javascript
JS注释所产生的bug 即使注释也会执行
Nov 19 Javascript
javascript创建createXmlHttpRequest对象示例代码
Feb 10 Javascript
Javascript中引用示例介绍
Feb 21 Javascript
Node.js中的流(Stream)介绍
Mar 30 Javascript
JS实现字符串转日期并比较大小实例分析
Dec 09 Javascript
浅谈js和css内联外联注意事项
Jun 30 Javascript
canvas时钟效果
Feb 16 Javascript
jquery点赞功能实现代码 点个赞吧!
May 29 jQuery
详解Vue开发微信H5微信分享签名失败问题解决方案
Aug 09 Javascript
JavaScript实现选项卡效果的分析及步骤
Apr 16 Javascript
vue elementui tree 任意级别拖拽功能代码
Aug 31 Javascript
JS实现HTML页面中动态显示当前时间完整示例
Jul 30 #Javascript
JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例
Jul 30 #Javascript
js+html5实现手机九宫格密码解锁功能
Jul 30 #Javascript
vscode中vue-cli项目es-lint的配置方法
Jul 30 #Javascript
JavaScript树的深度优先遍历和广度优先遍历算法示例
Jul 30 #Javascript
JavaScript笛卡尔积超简单实现算法示例
Jul 30 #Javascript
angular-tree-component的使用详解
Jul 30 #Javascript
You might like
php中使用getimagesize获取图片、flash等文件的尺寸信息实例
2014/04/29 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
2017/09/01 PHP
win10下 php安装seaslog扩展的详细步骤
2020/12/04 PHP
改善你的jQuery的25个步骤 千倍级效率提升
2010/02/11 Javascript
jquery实现心算练习代码
2010/12/06 Javascript
将数字转换成大写的人民币表达式的js函数
2014/09/21 Javascript
基于jquery的文字向上跑动类似跑马灯的效果
2014/09/22 Javascript
JavaScript中的包装对象介绍
2015/01/27 Javascript
javascript框架设计之类工厂
2015/06/23 Javascript
EasyUI 结合JS导出Excel文件的实现方法
2016/11/10 Javascript
深入理解Angular4中的依赖注入
2017/06/07 Javascript
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
2018/11/01 NodeJs
[01:27]2014DOTA2展望TI 剑指西雅图IG战队专访
2014/06/30 DOTA
[00:59]DOTA2荣耀之路1:Doom is back!weapon X!
2018/05/22 DOTA
[01:00:13]完美世界DOTA2联赛 LBZS vs Forest 第一场 11.07
2020/11/09 DOTA
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
python批量生成本地ip地址的方法
2015/03/23 Python
在Python中处理日期和时间的基本知识点整理汇总
2015/05/22 Python
linux环境下python中MySQLdb模块的安装方法
2017/06/16 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
2018/10/23 Python
常用python爬虫库介绍与简要说明
2020/01/25 Python
python unichr函数知识点总结
2020/12/16 Python
中国宠物用品商城:E宠商城
2016/08/27 全球购物
美国知名平价彩妆品牌:e.l.f. Cosmetics
2017/11/20 全球购物
Mamaearth官方网站:印度母婴护理产品公司
2019/10/06 全球购物
安全事故检讨书
2014/01/18 职场文书
销售员岗位职责范本
2014/02/03 职场文书
中餐厅主管的职责范文
2014/02/04 职场文书
赡养老人协议书
2014/04/21 职场文书
安全例会汇报材料
2014/08/23 职场文书
师德师风自我剖析材料
2014/09/27 职场文书
环保主题班会教案
2015/08/13 职场文书
小学生作文之《压岁钱的烦恼》
2019/09/27 职场文书
如何在向量化NumPy数组上进行移动窗口
2021/05/18 Python
Pandas搭配lambda组合使用详解
2022/01/22 Python
HTML中的表单元素介绍
2022/02/28 HTML / CSS