uni-app uni.showLoading 无法隐藏

uni-app uni.showLoading 无法隐藏

详细问题描述

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

[内容]

重现步骤

[步骤]

Image

代码封装

封装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();  
    }  
}  
});

[结果]

Image

Image

[期望]

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

IDE运行环境说明

环境 说明
IDE HBuilderX
IDE版本号 2.1.0.20190713
windows版本号 windows 10专业版

uni-app运行环境说明

运行环境 说明
运行端 h5
运行端版本号 google chrome 版本 72.0.3626.121(正式版本) (64 位)

App运行环境说明

环境 说明
Android版本号 -
iOS版本号 -
手机型号 -
模拟器型号 -

联系方式

[QQ] 529191272


更多关于uni-app uni.showLoading 无法隐藏的实战教程也可以访问 https://www.itying.com/category-93-b0.html

12 回复

同样是用这样的写法,不可能有这样的问题 点我试试这个

更多关于uni-app uni.showLoading 无法隐藏的实战教程也可以访问 https://www.itying.com/category-93-b0.html


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

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

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

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

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

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

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

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

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

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

根据问题描述,uni.showLoading无法隐藏的问题可能由以下几个原因导致:

  1. 请求回调结构错误:您的uni.request的回调函数结构存在问题,fail和complete回调应该放在uni.request的参数对象内部,而不是作为同级参数。正确的结构应该是:
uni.request({
    url: url,
    // 其他参数...
    success: (res) => {
        uni.hideLoading();
        // 成功处理
    },
    fail: (err) => {
        uni.hideLoading();
        // 失败处理
    },
    complete: () => {
        // 完成处理
    }
});
回到顶部