wfighting
wfighting
  • 发布:2019-07-15 12:01
  • 更新:2021-03-12 16:40
  • 阅读:2055

【报Bug】uni.showLoading 无法隐藏

分类:uni-app

详细问题描述

(DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题)

[内容]

重现步骤

[步骤]

代码封装

/
封装uni.request ajax请求
****/
function xxx_Ajax(option){
// debugger;
var url = option.url;
var data = XXXAPI.isEmpty(option.data) ? {} : option.data;

               var header = XXXAPI.isEmpty(option.header) ? {} : option.header;  
               header['content-type'] = XXXAPI.isEmpty(header['content-type']) ? 'application/json' : header['content-type'];  

               var method = XXXAPI.isEmpty(option.method) ? 'POST' : option.method; //默认POST  
               var dataType = XXXAPI.isEmpty(option.dataType) ? 'json' : option.dataType; //默认json  
               var responseType = XXXAPI.isEmpty(option.responseType) ? 'text' : option.responseType; //默认text  

               uni.showLoading({  
                    title: '正在加载',  
                    mask:true  
                });  

               uni.request({  
                url: url,  
                method: method,  
                data: data,  
                header: header,  
                dataType : dataType,  
                responseType : responseType,  
                success: res => {  

                    //隐藏  
                    uni.hideLoading();  

                    var resObj = {};  
                    resObj['errMsg'] = res['errMsg'];  
                    resObj['statusCode'] = res['statusCode'];   
                    resObj['header'] = res['header'];   
                    var resData = res.data;  

                      //成功执行回调函数  
                      if(typeof(option.success) == 'function'){  
                         option.success(resObj);    
                      }  
                    }  

                },  
                fail: () => {   
                    //隐藏  
                    uni.hideLoading();  
                     if(typeof(option.fail)=='function'){  
                            option.fail();  
                     }  
                },  
                complete: () => {   

                     if(typeof(option.complete)=='function'){  
                            option.complete();  
                     }  
                }  
       });  

}  

[结果]

[期望]

[如果语言难以表述清晰,拍一个视频或截图,有图有真相]

IDE运行环境说明

[HBuilder 或 HBuilderX。如果你用其他工具开发uni-app,也需要在此说明]

HBuilderX 版本 2.1.0.20190713,

[IDE版本号]
HBuilderX 版本 2.1.0.20190713,
[windows版本号]
windows 10专业版
[mac版本号]

uni-app运行环境说明

[运行端是h5或app或某个小程序?]

h5

[运行端版本号]

google chrome 版本 72.0.3626.121(正式版本) (64 位)

[项目是cli创建的还是HBuilderX创建的?如果是cli创建的,请更新到最新版cli再试]

[编译模式是老模板模式还是新的自定义组件模式?]

App运行环境说明

[Android版本号]

[iOS版本号]

[手机型号]

[模拟器型号]

附件

[IDE问题请提供HBuilderX运行日志。菜单帮助-查看运行日志,点右键打开文件所在目录,将log文件压缩成zip包上传]

[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]

[App安装包或H5地址]

[可重现代码片段]

/
封装uni.request ajax请求
****/
function xxx_Ajax(option){
// debugger;
var url = option.url;
var data = XXXAPI.isEmpty(option.data) ? {} : option.data;

               var header = XXXAPI.isEmpty(option.header) ? {} : option.header;  
               header['content-type'] = XXXAPI.isEmpty(header['content-type']) ? 'application/json' : header['content-type'];  

               var method = XXXAPI.isEmpty(option.method) ? 'POST' : option.method; //默认POST  
               var dataType = XXXAPI.isEmpty(option.dataType) ? 'json' : option.dataType; //默认json  
               var responseType = XXXAPI.isEmpty(option.responseType) ? 'text' : option.responseType; //默认text  

               uni.showLoading({  
                    title: '正在加载',  
                    mask:true  
                });  

               uni.request({  
                url: url,  
                method: method,  
                data: data,  
                header: header,  
                dataType : dataType,  
                responseType : responseType,  
                success: res => {  

                    //隐藏  
                    uni.hideLoading();  

                    var resObj = {};  
                    resObj['errMsg'] = res['errMsg'];  
                    resObj['statusCode'] = res['statusCode'];   
                    resObj['header'] = res['header'];   
                    var resData = res.data;  

                      //成功执行回调函数  
                      if(typeof(option.success) == 'function'){  
                         option.success(resObj);    
                      }  
                    }  

                },  
                fail: () => {   
                    //隐藏  
                    uni.hideLoading();  
                     if(typeof(option.fail)=='function'){  
                            option.fail();  
                     }  
                },  
                complete: () => {   

                     if(typeof(option.complete)=='function'){  
                            option.complete();  
                     }  
                }  
       });  

}  

联系方式

[QQ]
529191272

2019-07-15 12:01 负责人:无 分享
已邀请:
hhyang

hhyang - 如有问题,请添加QQ1606726660 备注付费咨询

  • wfighting (作者)

    我哪怕先写showLoading 然后hideLoading 也会出现这个问题,今天IDE升级之前还没存在这个问题,升级之后就有这个问题了。

    2019-07-15 14:08

香蕉不是笨啦啦

香蕉不是笨啦啦 - 哈哈哈

检查回调有没有执行,反正我刚试,uni.hideloading没问题

  • wfighting (作者)

    我哪怕先写showLoading 然后hideLoading 也会出现这个问题,今天IDE升级之前还没存在这个问题,升级之后就有这个问题了。

    2019-07-15 14:09

  • wfighting (作者)

    回复 wfighting: 你浏览器是什么,我怀疑跟浏览器版本有问题

    2019-07-15 14:09

DCloud_UNI_HT

DCloud_UNI_HT

没有复现到问题,检查是不是执行多个 showLoading ,如果都没问题,提供一个 demo ,我用你的 demo 复现一下。

  • wfighting (作者)

    我找到问题了 一个界面出现两次请求 可能导致冲突, 那这个有木有好的解决方法

    2019-07-16 12:30

  • DCloud_UNI_HT

    回复 wfighting: 没有什么好的解决方案,自己控制 showLoading 和 hideLloading 的时机就好

    2019-07-16 16:49

2***@qq.com

2***@qq.com - 搬砖的

我也遇到这问题,只执行一次showLoading,回调后也执行一次hideLloading,结果也没隐藏。而且还是随机出现这问题,有时候隐藏,有时候无法隐藏。主要是在h5有这问题,小程序没有

w***@163.com

w***@163.com - 我不知道我是干啥的....

我也遇到了,我在使用uni.request之前调用showloading,然后在complete中调用hideloading会出现先执行hideloading后执行showloading的情况,升级2.1.1版本后出现的

4***@qq.com

4***@qq.com

我也遇到这样的问题,在H5端 showLoading调用后再调用hideLoading,loading框不关闭,打了日志没有调过重复的showLoading,在小程序端没有问题,请问你们解决了吗?

该问题目前已经被锁定, 无法添加新回复