关于hideLoading报hideLoading:fail:toast can't be found的解决方法
发布于 4 年前 作者 linming 3783 次浏览 来自 分享

官方文档指出,一个页面只能存在一个showLoading和一个hideLoading,且成组匹配存在。

出行问题的原因,多个请求同时都调用了showLoading,但是其实不管你调用多少次,页面仅存在一个showLoading,所以当请求返回时,多个接口又同时调用了hideLoading,这时候就只有一个hideLoading生效,其他的hideLoading因为找不到showLoading就会报错 “hideLoading:fail:toast can’t be found?”

我的解决方法:

//loading,接口传入参数,决定是否调用showLoading
if(loading){
  //is_showLoading 自定义的一个公共数组,每有一个接口调用showLoading就往里面push一个值
        this.is_showLoading.push(1);
        wx.showLoading({
          mask,
          title
        });
      }
//接口返回时 complete中
//判断该接口是否是使用了loading,如果是,pop掉一个is_showLoading的值
//当异步请求最后一个返回判断到is_showLoading的长度是0时,才真正的hideLoading
if(loading){
              this.is_showLoading.pop();
              if(this.is_showLoading.length === 0) wx.hideLoading();
            }
回到顶部