赞
踩
//定义请求根路径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效果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。