从axis.request中提取响应|Node JS

2skhul33  于 2023-10-17  发布在  Node.js
关注(0)|答案(1)|浏览(115)

你能帮助我吗?我需要从axios请求响应中提取一些数据,但我不知道如何做到这一点。
下面是我代码:

let result;

let config = {
    method: 'get',
    maxBodyLength: Infinity,
    url: urlToSend,
    headers: { 
        'Authorization': 'Bearer ' + token,
    }
};

axios.request(config)
    .then((response) => {
        //console.log(JSON.stringify(response.data));
        result = response.data;
    })
    .catch((error) => {
        console.log(error);
    });

console.log(result); //I NEED THE DATA HERE <-

但结果总是:[]
谢谢你的帮助

xvw2m8pv

xvw2m8pv1#

问题是console.log(result)响应准备好之前被执行,并且在.then(...)回调中的代码被执行之前被执行。要让它等待响应准备就绪并将值分配给let result;变量,您必须执行以下操作之一:
1.像这样在axios.request(...)处添加await关键字,但请注意,顶级await语句在整个平台上都不受支持,但只要你在一个aprc函数中,你就可以了:

await axios.request(config)
  .then((response) => {
  ...

1.或者.then(...)回调函数中的console.log(...),或者更好的方法是继续.then链:

await axios.request(config)
  .then((response) => {
    return response.data
  })
  .then((result) => {
    console.log(result)
  })
  .catch(err => {})

1.或者可能最好和最可读的事情就是充分利用ES6的javascript/await语法:

async main() {
  try {
    const response = await axios.request(config);
    console.log(response.data)
  } catch(err) {
    console.error(error);
  }
}

相关问题