关于request中return await axios的问题

来源:7-11 Github接口代理完善

MeSKiL

2019-10-10

async function requestGithub(method,url,data,headers) {
    return await axios({
        method,
        url:`${github_base_url}${url}`,
        data,
        headers
    })
}

// 区分服务端与客户端渲染

async function request({method = 'GET', url, data = {}}, req, res) {
    if(!url){
        throw Error('url must provide')
    }
    if(isServer){
        const session = req.session;
        const githubAuth = session.githubAuth || {};
        const headers = {}

        if(githubAuth.access_token){
            headers['Authorization'] = `${githubAuth.token_type}${githubAuth.access_token}`
        }
        return await requestGithub(method,url,data,headers)
    }else{
        return await axios({
            method,
            url:`/github${url}`
        })
    }
}

request返回的是一个promise,直接返回axios就可以了吧应该。return await axios({})的话,我的理解是 await axios得到的是一个具体的结果,因为在async函数里,所以return的时候又把结果变成了promise,等于是先把promise变成data,再把data变成promise,既然结果都是传递promise,那async 和 await是不是有点多此一举了,还是说有啥别的好处嘛

function requestGithub(method,url,data,headers) {
    return axios({
        method,
        url:`${github_base_url}${url}`,
        data,
        headers
    })
}

// 区分服务端与客户端渲染

function request({method = 'GET', url, data = {}}, req, res) {
    if(!url){
        throw Error('url must provide')
    }
    if(isServer){
        const session = req.session;
        const githubAuth = session.githubAuth || {};
        const headers = {}

        if(githubAuth.access_token){
            headers['Authorization'] = `${githubAuth.token_type}${githubAuth.access_token}`
        }
        return requestGithub(method,url,data,headers)
    }else{
        return axios({
            method,
            url:`/github${url}`
        })
    }
}
写回答

1回答

Jokcy

2019-10-13

经你这么一说好像是这么回事,你可以试一下,没问题就行

0
0

全栈进阶课程 React16.8+Next.js+Koa2一步到位开发Github

学习React/Next.js服务端渲染SSR同构设计方案,理解OAuth登录体系的实现原理

651 学习 · 311 问题

查看课程