在axios中等待请求响应

kyks70gy  于 2022-12-23  发布在  iOS
关注(0)|答案(2)|浏览(270)

我尝试在带有axios的Vue应用程序中运行两个请求,第二个请求需要在第一个请求中获得的信息,特别是access_token。
我试过类似

let access_token = '';
var config = {
    method: 'post',
    url: <url1>,
    data: <data>
    headers: {
      header1: <header>
      }
}

axios(config)
.then((response: any) => {
    access_token = response.access_token;
}

config = {
    method: 'post',
    url: <url2>,
    headers: {
      Authorization: `Bearer ${access_token}`
      }
}
axios(config);

正如我在开发人员工具的Network选项卡上看到的,第一个请求返回一个access_token,但是当运行第二个请求时,access_token为空,因此第二个请求失败。
你知道我错过了什么吗

blpfk2vs

blpfk2vs1#

您需要在第一个请求的.then()中调用第二个请求,这基本上意味着在启动第二个请求之前等待第一个请求完成:

const config = {
    method: 'post',
    url: <url1>,
    data: <data>
    headers: {
        header1: <header>
    }
}

axios(config).then((response: any) => {
    const access_token = response.data.access_token;

    const config = {
        method: 'post',
        url: <url2>,
        headers: {
            Authorization: `Bearer ${access_token}`
        }
    }
    axios(config).then(...);
}
rt4zxlrg

rt4zxlrg2#

您需要等待第一个请求解析Aka完成,然后可以使用async/await逻辑发出第二个请求。
密码是-

async function req(){
let access_token = '';
var config = {
    method: 'post',
    url: <url1>,
    data: <data>
    headers: {
      header1: <header>
      }
}

const {data} = await axios(config);

access_token = data.access_token

config = {
    method: 'post',
    url: <url2>,
    headers: {
      Authorization: `Bearer ${access_token}`
      }
}

axios(config);

}

相关问题