token的问题
来源:9-5 HTTP API触发云函数获取歌单列表
Brannua
2019-10-26
- 老师好
- 管理系统的koa后台代码中, utils/getAccessToken.js
- 当我在删除json文件后尝试调用getAccessToken接口已经成功创建新的json文件并在如下的try代码块中已经成功打印出了res的值,也就是返回的最新token的值
- 但是为什么控制器中仍然打印的是undefined,然后再次刷新浏览器才可以打印出token的值
router.get('/list', async (ctx, next) => {
let token = await getAccessToken()
console.log(token)// 先创建的json然后读取token的打印值?undefined : token
ctx.body = '歌单列表'
})
const getAccessToken = async () => {
try {
/* 读取文件 */
const readRes = fs.readFileSync(fileName, 'utf8')
const readObj = JSON.parse(readRes)
console.log(readObj)
/* 判断读取的token是否过期,过期则刷新文件并重新读取token */
const createTime = new Date(readObj.createTime).getTime()
const nowTime = new Date().getTime()
if ((nowTime - createTime) / 1000 / 60 / 60 >= 2) {
await updateAccessToken()
await getAccessToken()
}
let res = readObj.access_token
console.log(res)
return res
} catch (error) {
/* 读取文件失败则尝试重新创建json文件并读取 */
await updateAccessToken()
await getAccessToken()
}
}
写回答
1回答
-
现有代码中没有考虑这种情况,因为项目已经跑起来了,几乎不会有人特意去把这个文件删除。
请检查下是不是在读取新数据之前就return了
022019-11-02
相似问题