收藏
回答

小程序wx.showLoading的弹出会有延迟吗?

当使用wx.showLoading阻拦用户多次点击时,在真机上测试showLoading并不是立即出现,会造成点击事件多次执行。

回答关注问题邀请回答
收藏

4 个回答

  • Dragon baby
    Dragon baby
    2022-08-08

    小程序和web开发不一样,web开发是可以通过loading的方式去阻止用户高频点击,因为web开发 渲染层执行的时候js是阻塞的。而小程序是双线程,webview渲染是需要时间的,loading还未渲染出来的时候,js逻辑层依然可以运行,所以想通过loading这种视觉层去阻挡用户高频点击是无效的。

    方案其实很多种,那就是不通过webview层去阻挡用户的点击,通过js控制,通过变量加锁解锁或者是防抖都行。

    2022-08-08
    有用
    回复
  • 郑钱花
    郑钱花
    2022-05-30

    我giao,放在request请求的时候 给 uni.showLoading,跟 点击事件多次执行是两回事啊, 你以为来个showLoading就能阻止 多次点击了?想法错误

    2022-05-30
    有用
    回复 1
    • X
      X
      发表于小程序端
      2022-05-30

      我说了我是封装请求用的,点击会发起请求,如果loading不是立即会有问题。

      2022-05-30
      回复
  • 拾柒
    拾柒
    2022-05-30

    为啥用showLoading啊,直接做防抖或变量控制啊

    2022-05-30
    有用
    回复 3
    • X
      X
      2022-05-30
      防抖控制总感觉不好用,变量每次都要写
      2022-05-30
      回复
    • 拾柒
      拾柒
      2022-05-30回复X
      那你wx.showLoading不用每次写?
      2022-05-30
      回复
    • X
      X
      2022-05-30
      request.loading && uni.showLoading({
          title: 加载中,
          mask: true
        });
      我只是举个例子,我用做封装请求加载使用的。
      2022-05-30
      回复
  • Frank
    Frank
    2022-05-30

    代码贴出来,一起学习下呗

    2022-05-30
    有用
    回复 5
    • X
      X
      2022-05-30
      我这测试 你在tap事件里showLoading 用手机狂点就会多次执行
      2022-05-30
      回复
    • Frank
      Frank
      2022-05-30回复X
      像楼上说的封装个防抖放在工具类里吧
      2022-05-30
      回复
    • X
      X
      2022-05-30
      还是希望官方解决一下,我只是举个例子,我是用showLoading做公共请求的多次提交的校验的
      2022-05-30
      回复
    • Frank
      Frank
      2022-05-30回复X
      我自己猜的哈,也不一定对,showLoading调用到视图显示,这中间可能有个动画效果的阶段
      2022-05-30
      回复
    • X
      X
      2022-05-30
      谢谢了 ,只是提出来,希望大家避坑 ,因为传统的web端的做法,都是请求前loading请求后关闭loading,以防止重复提交的。
      2022-05-30
      回复
登录 后发表内容