「请求全部都是异步的」把这个改掉就可以,我们也是这样 很稳定: 每个页面的请求可以 await 一个个来,在request层面拦截判断状态就行。 比如页面有 5 个请求:a、b、c、d、e 原先: a(); //在request会拦截判断登录状态 b(); //5个同时发出去,他们在发出去时候都属于未登录 c(); d(); e(); 改成: await a(); //在request会拦截判断登录状态 b(); //b、c、d、e 同时请求时,a已经处理好登录状态。 c(); d(); e();
小程序里面统一的登录拦截怎么做好一点?目前做的一个内部使用的小程序,需要先登录后才能使用。 登录逻辑大概是:进入小程序先判断当前是否已登录,如果未登录,先调用wx.login尝试自动登录,如果未存在用户,就跳转登录页面。 由于小程序里面请求全部都是异步的,这个登录判断现在做得很难受。 每个页面都写登录状态判断目前尝试在request请求之前统一处理,但是如果有2个接口同时请求的话就会同时自动登录2次。这个很不爽。请教有没有其他方法?能够全局统一拦截掉 function _do(api, method, data) { let header = HEADER header[TOKENNAME] = getToken() return new Promise((reslove, reject) => { wx.request({ url: HTTP_REQUEST_URL + api, method: method || 'GET', header: header, data: data || {}, success: (res) => { if (res.data.code == 1) { reslove(res.data, res); } else if (res.data.code == 403) { wx.showToast({ icon: "none", title: '你没有访问此接口的权限!', }) reject('你没有访问此接口的权限!') } else if ([401].indexOf(res.data.code) !== -1) { logout() wx.showToast({ icon: "none", title: '登录状态已失效,请重新登录!', }) setTimeout(() => { wx.navigateTo({ url: '/pages/login/index', }) }, 1500) } else { wx.showToast({ icon: "none", title: res.data.msg || '请求失败!', }) reject(res.data); } }, fail: (msg) => { reject(msg); } }) }) } function request1(api, method, data, {noAuth = false, noVerify = false}) { if (!isLogin() && !PUBLIC_API_LIST.includes(api)) { return new Promise((reslove, reject) => { /** * 尝试自动登录 * 如果自动登录没成功就跳转登录页面 */ wx.login({ success: res => { wx.request({ url: HTTP_REQUEST_URL + '/api/user/autoLogin', method: 'POST', header: HEADER, data: { code: res.code }, success: (response) => { if (response.data.code == 1) { let token = response.data.data.token if (token) { setToken(token) _do(api, method, data).then(res => { reslove(res) }).catch(err => { reject(err) }) } else { wx.navigateTo({ url: '/pages/login/index', }) } } else { wx.navigateTo({ url: '/pages/login/index', }) } }, fail: (msg) => { wx.navigateTo({ url: '/pages/login/index', }) } }) }, fail: () => { wx.navigateTo({ url: '/pages/login/index', }) } }) }) } else { return _do(api, method, data) } }
2022-12-21测试了一下,确实安卓部分机型没有展示出来。
picker省市区选择器,浙江省温州市温州经济开发区不显示问题?微信小程序使省市区选择器组件,打开后有些手机能正常显示出浙江省温州市温州经济开发区,有些则没有这个选项;目前不显示的手机型号有:1.华为P50 Pro;2.华为 Mate 20;3.红米K50 微信版本都已经升级到最新的8.0.31 [图片] [图片] [图片]
2022-12-21