- wx.request如何拦截?当多个需要登录的接口请求,有一个返回未登录如何拦截其他的?
一个页面有多个接口(需要token),请求的时候,多个接口返回未登录,然后出现了多次未登录的操作,如:未登录提示和连续打开多个login页面 [代码]module.exports.request = [代码][代码]function[代码][代码](data) {[代码][代码] [代码][代码]return[代码] [代码]new[代码] [代码]Promise((resolve, reject) => {[代码][代码] [代码][代码]wx.request({[代码][代码] [代码][代码]method: [代码][代码]'POST'[代码][代码],[代码][代码] [代码][代码]url: app.globalData.baseUrl,[代码][代码] [代码][代码]data: data,[代码][代码] [代码][代码]success(res) {[代码][代码] [代码][代码]// res.statusCode === 200 ? resolve(res.data) :[代码][代码] [代码][代码]// 可以在这里判断接口是否有效,吗?有效执行无效跳转登录页面[代码][代码] [代码][代码]if[代码] [代码](res.statusCode === 200){[代码][代码] [代码][代码]if[代码] [代码](res.data.code === [代码][代码]'0'[代码][代码]){[代码][代码] [代码][代码]resolve(res.data.data)[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]if[代码][代码](res.data.code ===[代码][代码]'-101'[代码][代码]) { [代码][代码]// 未登录[代码][代码] [代码][代码]wx.showToast({[代码][代码] [代码][代码]title: res.data.msg,[代码][代码] [代码][代码]icon: [代码][代码]'none'[代码][代码],[代码][代码] [代码][代码]duration: 1500[代码][代码] [代码][代码]})[代码][代码] [代码][代码]let openId = app.globalData.openid || wx.getStorageSync([代码][代码]'openid'[代码][代码]);[代码][代码] [代码][代码]let accessToken = app.globalData.accessToken || wx.getStorageSync([代码][代码]'accessToken'[代码][代码]);[代码][代码] [代码][代码]if[代码] [代码](accessToken){[代码][代码] [代码][代码]wx.removeStorageSync([代码][代码]'accessToken'[代码][代码]);[代码][代码] [代码][代码]app.globalData.accessToken = [代码][代码]null[代码][代码];[代码][代码] [代码][代码]wx.navigateTo({[代码][代码] [代码][代码]url: [代码][代码]"/pages/bindPhone/bindPhone"[代码][代码] [代码][代码]});[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]if[代码] [代码](openId) {[代码][代码]// 授权的时候[代码][代码] [代码][代码]wx.navigateTo({[代码][代码] [代码][代码]url: [代码][代码]"/pages/bindPhone/bindPhone?openid="[代码] [代码]+ openId[代码][代码] [代码][代码]});[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{ [代码][代码]// 未授权[代码][代码] [代码][代码]wx.removeStorageSync([代码][代码]'accessToken'[代码][代码]);[代码][代码] [代码][代码]app.globalData.accessToken = [代码][代码]null[代码][代码];[代码][代码] [代码][代码]setTimeout([代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]wx.navigateTo({[代码][代码] [代码][代码]url: [代码][代码]'/pages/login/login'[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}, 1500)[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]return[代码] [代码]reject(res.data);[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]if[代码] [代码](res.data.code !== [代码][代码]'0'[代码][代码]){[代码][代码] [代码][代码]wx.showToast({[代码][代码] [代码][代码]title: res.data.msg,[代码][代码] [代码][代码]icon: [代码][代码]'none'[代码][代码],[代码][代码] [代码][代码]duration: 1500[代码][代码] [代码][代码]})[代码][代码] [代码][代码]reject(res.data);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]reject(res.data);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]},[代码][代码] [代码][代码]fail(res) {[代码][代码] [代码][代码]reject(res)[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}).[代码][代码]catch[代码][代码](e => {[代码][代码] [代码][代码]console.log(e)[代码][代码] [代码][代码]})[代码][代码]}[代码]
2019-12-17 - 小程序特定页面闪屏严重,求解决?
机型:小米8 6+64G 微信版本:7.0.7 内存充足情况下闪屏严重,其他页面不闪。该页面用其他手机查看也不闪。 [视频] 已经上报了日志,微信号:wxid_cpo2kik8kyk322
2019-10-31 - scroll-view惯性滚动时动态设置scrollTop时的回弹抖动问题?
先放一个代码片段:https://developers.weixin.qq.com/s/VmrfhvmU7hcv 实现效果:如下图——向下划动时直接滚动到底部,向上划动时直接滚动到顶部。 [图片] 我在通过 touchstart 和 touchend 事件来判断上划或下划,在 touchend 时触发,上划就设置 scroll-top 为最大值,下划则设置为0。 [代码]onTouchstart(e) {[代码][代码] [代码][代码]this[代码][代码].startPageY = e.changedTouches[0].pageY;[代码][代码]},[代码][代码]onTouchend(e) {[代码][代码] // 划动距离[代码][代码] [代码][代码]const moveY = e.changedTouches[0].pageY - [代码][代码]this[代码][代码].startPageY;[代码][代码] [代码][代码]if[代码] [代码](moveY !== 0) {[代码][代码] [代码][代码]// 上划就滚动到底部,下划就滚动到顶部[代码][代码] [代码][代码]this[代码][代码].setData({ scrollTop: moveY > 0 ? 0 : 10000})[代码][代码] [代码][代码]}[代码][代码]}[代码]但是划动速度过快时,页面会出现回弹抖动,如下图。为了方便观察,我把页面背景设成了黑色。 [图片] 猜测是由于 scroll-view 的惯性滚动引起的,在触发 touchend 时,滚动并没有结束。如果把 scroll-with-animation (在设置滚动条位置时使用动画过渡)设为flase就不会存在这种问题了,但是那样又太生硬了。 请问这种问题有什么好的解决方法吗?
2019-10-30