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

 更新时间:2018年07月30日 13:39:47   作者:杜帅在掘金  
这篇文章主要介绍了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,请告诉我)

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

相关文章

  • 详解vue如何使用自定义指令

    详解vue如何使用自定义指令

    在Vue的模板语法中,我们学了很多指令,当然除了这些指令,Vue也允许我们自己定义自己的指令,所以本文就来和大家聊聊如何使用自定义指令吧
    2023-10-10
  • el-form的model、prop属性和表单校验等使用

    el-form的model、prop属性和表单校验等使用

    本文主要介绍了el-form的model、prop属性和表单校验等使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • npm run dev报错信息及解决方法

    npm run dev报错信息及解决方法

    这篇文章主要为大家介绍了npm run dev报错信息及解决方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Vue动态修改网页标题的方法及遇到问题

    Vue动态修改网页标题的方法及遇到问题

    Vue下有很多的方式去修改网页标题,这里总结下解决此问题的几种方案:,需要的朋友可以参考下
    2019-06-06
  • vue实现高德地图添加多个点标记

    vue实现高德地图添加多个点标记

    地图多点标注其实是个非常简单的问题,这篇文章主要给大家介绍了关于vue实现高德地图添加多个点标记的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • el-table实现转置表格的示例代码(行列互换)

    el-table实现转置表格的示例代码(行列互换)

    这篇文章主要介绍了el-table实现转置表格的示例代码(行列互换),本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-02-02
  • vue 实现移动端键盘搜索事件监听

    vue 实现移动端键盘搜索事件监听

    今天小编就为大家分享一篇vue 实现移动端键盘搜索事件监听,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • 在Vue项目中使用自定义字体的操作步骤

    在Vue项目中使用自定义字体的操作步骤

    在项目中使用自定义字体可以提升页面的视觉效果,并确保在不同设备上的一致性,文中通过代码示例给出了具体的操作步骤,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-06-06
  • vue开发拖拽进度条滑动组件

    vue开发拖拽进度条滑动组件

    这篇文章主要为大家详细介绍了vue开发拖拽进度条滑动组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • Vue中如何避免props验证失败问题

    Vue中如何避免props验证失败问题

    本文将探讨 props 验证失败的常见原因,并提供解决方法,帮助开发者在 Vue 组件开发中避免这些问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03

最新评论