let ajaxTimes = 0; // 同时发送异步代码的次数 export const myhttp = (parmas) => { // 当有地方调用请求方法的时候,就增加全局变量,用于判断有几个请求了 ajaxTimes++; wx.showLoading({ // 显示加载中loading效果 title: "加载中", mask: true //开启蒙版遮罩 }); // 返回一个promise对象 return new Promise((resolve, reject) => { wx.request({ url: parmas.url, method: parmas.method, data: parmas.data, header: parmas.method === 'POST' ?{ 'content-type': 'application/x-www-form-urlencoded', "authorization": wx.getStorageSync('token') || "" } : { 'content-type': 'application/json', "authorization": wx.getStorageSync('token') || "" }, success: (res)=> { resolve(res.data) }, fail: (err) => { reject(err) }, // 不管请求成功还是失败,都会触发 complete: () => { /** * !loading效果同时被多个请求触发是可以显示一个的,但是关闭loading一旦被第一个请求完成后关闭,后面的请求触发的loading效果就没了 * !所以,需要通过全局设置一个变量,来监听同时触发了几个请求,当最后一个请求完成后,再关闭loading * ?每次结束请求后,就减少全局变量,当为0时,就表示这是最后一个请求了 */ ajaxTimes--; // 此时就可以关闭loading效果了 if (ajaxTimes === 0) { // 关闭正在等待loading效果 wx.hideLoading(); } } }) }) }