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回答

谢成

2019-10-28

现有代码中没有考虑这种情况,因为项目已经跑起来了,几乎不会有人特意去把这个文件删除。

请检查下是不是在读取新数据之前就return了

0
2
慕哥8283073
回复
Brannua
是不是异步了
2019-11-02
共2条回复

微信小程序云开发-从0打造云音乐全栈小程序

横跨小程序端、云后端、CMS一站式云开发的小程序全栈课程

1938 学习 · 2768 问题

查看课程