一个页面触发多个请求如果全部返回失败后 跳转登录页会被执行多次
登录页onload 有自动登录 由于登录页被多次加载 自动登录频繁触发 毫秒级请求
function request(url, method = "GET", data = {}, header = "application/x-www-form-urlencoded") {
wx.showLoading({
title: '努力加载中',
mask: true
})
isShowLoading = true;
//这里是判断不需要携带token
if (urlList.indexOf(url) > -1) {
header = {
'Content-Type': header,
}
} else {
header = {
'Content-Type': header,
'MINIAPP-TOKEN': wx.getStorageSync('token')
}
//console.log(wx.getStorageSync('token'))
}
return new Promise(function (resolve, reject) {
wx.request({
url: develop.BASE_URL + url,
data: data,
method: method,
header: header,
success: function (res) {
if (res.statusCode == 200) {
if (res.data.result_code == 'due') {//token过期之后去首页自动登录
wx.clearStorage();
reject(res.data)
wx.reLaunch({
url: '/pages/login/login',
})
} else if (res.data.result_code == 'error') {//同时登录强制下线
wx.clearStorage();
reject(res.data)
wx.reLaunch({
url: '/pages/login/login?state=' + res.data.msg,
})
} else {
resolve(res.data);
}
}
},
fail: function (err) {
//服务器连接异常
reject(err, "服务器连接异常,请检查网络再试")
},
complete: function (params) {
if (isShowLoading) {
wx.hideLoading();
isShowLoading = false
}
}
})
})
}
你的意思应该是,接口请求失败会执行跳转登录页,当多个请求异步发起,每个执行到错误后都会执行跳转登录页,这样就会多次跳转登录页,你登录页有逻辑,就会多次执行,有个思路较为简单些,就是定义一个全局变量,当有执行进入登录页则为true,等其他错误执行要跳转登录页时去校验这个变量 为true则阻断,如果从登录页退出 onUnload时再将这个变量置为false即可解决,看能否帮到你
这个就是你代码的问题了