跪求大佬们能对我这垃圾方法提一些意见或者给优化优化,我想把请求的部分提出来,关键是不知道怎么下手啊。
function ajax(method, url, data) {
let that = this;
let app = getApp();
let apiUrl = app.globalData.url;
let time = wx.getStorageSync("expiredAt"); //过期时间
let newTime = Date.parse(new Date());// 当前时间
let userId = wx.getStorageSync("userId");
let token = wx.getStorageSync("token");
return new Promise((resolove, reject) => {
if (!token) { // token不存在去重新登录
wx.redirectTo({
url: '/pages/login/index',
})
} else {
if (newTime - time > 0) { // token 过期了 刷新token
console.log("token过期")
wx.request({
url: apiUrl + '/api/transfer/token/' + userId,
header: {
Authorization: token
},
method: "GET",
dataType: "json",
success(res) {
if (res.data.success_code == 200) {
wx.setStorageSync("expiredAt", Date.parse(new Date(res.data.data.expired)))
wx.setStorageSync("token", res.data.data.token)
wx.setStorageSync("userId", res.data.data.userId)
// 继续之前的请求
wx.request({
url: apiUrl + url,
header: {
Authorization: token
},
method,
data,
dataType: 'json',
success(res) {
if (res.data.success_code == 200) {
resolove(res.data)
}else {
reject(res)
}
},
fail(res) {
wx.showToast({
title: '请求发送失败',
icon: "none"
})
}
})
}else {
wx.showToast({
title: 'token失效,重新登录',
icon: "none"
})
setTimeout(() => {
wx.redirectTo({
url: '/paegs/login/index',
})
}, 1000)
}
}
})
}else { // token没过期
wx.request({
url: apiUrl + url,
header: {
Authorization: token
},
method,
data,
dataType: 'json',
success(res) {
if (res.data.success_code == 200) {
resolove(res.data)
}else {
reject(res)
}
},
fail(res) {
wx.showToast({
title: '请求发送失败',
icon: "none"
})
}
})
}
}
})
}
// 向外暴露
module.exports = {
ajax
};
let app = getApp();
let apiUrl = app.globalData.url;
开头的两句代码, 是因为领导要求能够切换测试环境与正式环境用的,如果不需要可以写死在文件的开头
上一段在页面中使用的代码
//引入方法
const {ajax} = require('../../utils/request.js');
//方法的使用
// 获取商品信息
ajax('GET', '/api/transfer/getProductSelById', {
productId,
size
}).then(res => {
this.setData({
shopData: res.data
})
}).catch(err => {
console.log(err)
});
写的不好 大佬们給一下意见啊啊啊啊啊啊