2024.09.14 07:06
在开发小程序时数据接口业务时,需要判断用户登录状态是否过期,如果过期了就需要重新登录然后继续请求业务接口。
新建一个封装请求接口文件,代码如下:
export default Iwecore {
constructor(arg) {
this.pendings = []
}
// 调用接口
request(arg) {
return new Promise((resolve, reject) => {
uni.request({
url,
data,
method,
success: res => {
if(res.data.code === 400) { // 用户登录状态过期,需要重新登录
this.codeLogin() // 调用登录方法
this.pendings.push(() => { //将需要重新请求的接口放到一个队列中
resolve(this.request(arg))
})
} else {
resolve(res)
}
},
fail: reject
})
})
}
// Code登录
codeLogin() {
const _this = this
uni.login({
success(res) {
uni.request({
url,
data,
success: rows => {
if(rows.data.code === 100) {
uni.setStorageSync('token', rows.data.data)
_this.pendings.map((callback) => { //将所有存储到队列中的请求重新执行
callback()
})
_this.pendings = [] //清空请求队列
}
}
})
}
})
}
}