一个页面有多个接口(需要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) }) } |
1、判断当前页面路径是否是/pages/login/login 或 /pages/bindPhone/bindPhone
else if(res.data.code ==='-101') {// 未登录
var r = getCurrentPages().pop().route || '', ps = {'pages/login/login':0, 'pages/bindPhone/bindPhone':0}
if(r in ps) return
....
}
2、或者加个缓存变量,登录后清除wx.removeStorageSync('isAuthing')
else if(res.data.code ==='-101') {// 未登录
var r = wx.getStorageSync('isAuthing')
if(r) return
wx.setStorageSync('isAuthing', true)
....
}
总有个先后吧,同步方式,第一个接口返回不需要登录后再请求其他接口