模拟网络延迟加载,添加正在加载中图标显示

c 复制代码
//定义请求根路径baseUrl
const baseUrl="http://localhost:8080";

//同时发送异步代码的次数
let ajaxTimes=0;

/**
 * 返回请求根路径baseUrl
 */
export const getBaseUrl=()=>{
    return baseUrl;
}


/**
 * 后端请求工具类
 * @param {*} params 
 */
export const requestUtil=(params)=>{

    var start=new Date().getTime();
    console.log("ajaxTimes="+ajaxTimes)
    
    ajaxTimes++;

    //显示加载效果
    wx.showLoading({
      title: '加载中',
    })
    //模拟网络延迟加载
    while(true) if(new Date().getTime()-start > 1 * 1000)break;

    return new Promise((resolve,reject)=>{
        wx.request({
          ...params,
          url:baseUrl+params.url,
          success:(result)=>{
              resolve(result.data)
          },
          fail:(err)=>{
              reject(err)
          },
          complete:()=>{
              ajaxTimes--;
              if(ajaxTimes==0){
                  //关闭正在等待的图标
                  wx.hideLoading();
              }
          }
        })
    });
}

因为封装好的异步请求方法是全局的,有些页面可能同时发送多个异步请求,但返回数据的时间可能不一样,如果我们单单是一返回结果就结束loading动画,可能会产生有的异步请求还未完成就结束这个效果,所以我们必须保证所有的异步请求完成时才结束loading效果。所以我们定义ajaxTime变量一开始为0,发送一个异步请求就加一,返回结果就减一,直到最后所有的请求都发送完毕,此时我们就可以结束loading效果

相关推荐
智慧物业老杨2 分钟前
智慧物业数智化转型实战:从工单响应到业主满意度的闭环构建
java·开发语言
Kiling_07045 分钟前
Java集合框架:List集合详解与应用
java·开发语言·windows
fan_music19 分钟前
C语言如何实现C++的类
开发语言·c++
openKaka_22 分钟前
beginWork 的第一站:HostRoot 如何把 App 接入 Fiber 树
前端·javascript·react.js
毋语天25 分钟前
Python 常用内置模块详解:日志、随机数、时间、OS 与 JSON
开发语言·python
右耳朵猫AI32 分钟前
Python技术周刊 2026年第14周
开发语言·python·okhttp
叼烟扛炮41 分钟前
C++ 知识点22 函数模板
开发语言·c++·算法·函数模版
YOU OU1 小时前
HTML+CSS+JavaScript
前端·javascript·css·html
求学中--1 小时前
鸿蒙网络请求从入门到精通:HttpURLConnection+第三方库,GET/POST/文件上传全覆盖
开发语言·php·harmonyos
yaodong5181 小时前
Gemini长上下文重塑RAG架构
开发语言·php