在app里缓存获取token第一次是空值,再次刷新才能获取到,这是什么情况

it0_soft 2019-02-18 02:25:17
我用了前端缓存判断token是否存在,如果存在判断时间是否过去来实现,但是遇到问题了,onLaunch是异步的,总在onLoad之后执行,这就导致第一次获取的token是空值,只有在刷新一次后才会获取到值,这个该怎么整,App.js里代码如下:

// 判断token 是否过期
var tokenDate = wx.getStorageSync('tokenDate') || 'null';
console.log(tokenDate)
if (tokenDate == 'null') { // 如果为空的情况下 则去请求token 并缓存
wx.request({
url: 'http://api.hmxigou.com/api/5c22de286985d',
method: 'GET',
header: {
'Content-Type': 'application/json',
'version': 'v3.0'
},
data: {},
success: (res) => {
//定义当前时间戳
var timestamp = Date.parse(new Date());
//定义过期时间
var mytime = timestamp + 7200000; //2个小时
//存储token
//.... 请求成功回调
wx.setStorageSync('tokenDate', mytime); // token结束时间
wx.setStorageSync('access_token', res.data.data.access_token)
console.log(res)
console.log('过期时间为空时定义缓存')
console.log(wx.getStorageSync('access_token'));
},
fail: (res) => {
wx.showToast({
title: '网络异常',
duration: 2000
})
}
})
} else { // 有token 的情况下 判断token 是否有效
var nowDate = Date.parse(new Date());
var tokenEndTime = wx.getStorageSync('tokenDate');
//var endTime = new Date(tokenEndTime).getTime();

if (nowDate >= tokenEndTime) { // 如果过期则 更新 token & token 时间
//nowDate.setMonth(nowDate.getMonth() + 3);
wx.request({
url: 'http://api.hmxigou.com/api/5c22de286985d',
method: 'GET',
header: {
'Content-Type': 'application/json',
'version': 'v3.0'
},
data: {},
success: (res) => {
//定义当前时间戳
var timestamp = Date.parse(new Date());
//定义过期时间
var mytime = timestamp + 7200000; //2个小时
//存储token
//.... 请求成功回调
wx.setStorageSync('tokenDate', mytime); // token结束时间
wx.setStorageSync('access_token', res.data.data.access_token)
console.log(res)
console.log('缓存到期了')
//console.log(wx.getStorageSync('access_token'));
},
fail: (res) => {
wx.showToast({
title: '网络异常',
duration: 2000
})
}
})
}
}
}
...全文
13646 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
return new Promise((resolve, reject) => {})把异步请求的内容放里面 封装一个方法 在其他页面里用app.方法名.then(res=>{})调用,解决异步的问题,还有一种就是 延迟,在不影响数据逻辑和用户体验的情况下使用延迟
zyanna 2020-12-11
  • 打赏
  • 举报
回复
有解决方法吗?
吾与违心 2019-11-08
  • 打赏
  • 举报
回复
我现在就遇到这种问题?怎么解决
it0_soft 2019-02-19
  • 打赏
  • 举报
回复
都还没过完年吗?我自己顶一下

3,143

社区成员

发帖
与我相关
我的任务
社区描述
微信开发即微信公众平台开发,将企业信息、服务、活动等内容通过微信网页的方式进行表现,通过二次开发可以将公众账号由一个媒体型营销工具转化成提供服务的产品。
社区管理员
  • 微信开发
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧