js 中async 中的return 值的问题。

获取视频信息的URL 是通过API后台异步返回的。因此需要先通过getDashInfo 方法获取到url ,然后再创建axios对象,但是下边的REST_BASEURL 变量却是一个Promise 对象,看下代码哪里需要修改呢。

clipboard.png

function getDashInfo(){
    return new Promise((resolve,reject)=>{
        getDashServerInfo().then(res=>{
            console.log(res);
            let dash;
            let errCode=res.errCode;
            if(errCode==0){
                dash=res.data;
            }
            resolve(dash);
        })
    })
}
async function getBaseURL(){
    let dash=await getDashInfo();
    let url='';
    let dataPort='';
    if(dash.url.indexOf('https')!=-1){
        dataPort=dash.httpsCmdPort;
    }
    else{
        dataPort=dash.httpCmdPort;
    }
    url=dash.url+':'+dataPort;
    return url;
}
let REST_BASEURL=getBaseURL();
const newAxios=axios.create({
    baseURL:REST_BASEURL,
});
阅读 8.1k
3 个回答
//这里有问题:
let REST_BASEURL=getBaseURL(); //async 返回的还是一个 promise
const newAxios=axios.create({
    baseURL:REST_BASEURL,
});
//改成:
getBaseURL.then(REST_BASEURL=>{
    const newAxios=axios.create({
        baseURL:REST_BASEURL,
    });
})

async本来就是返回promise对象

getDashInfo函数这样改写

function getDashInfo(){
    return getDashServerInfo().then(res=>{
            console.log(res);
            let dash;
            let errCode=res.errCode;
            if(errCode==0){
                dash=res.data;
            }
            return dash;
        });
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题