Reactjs 将变量设置为Axios调用

Reactjs 将变量设置为Axios调用,reactjs,api,promise,return,axios,Reactjs,Api,Promise,Return,Axios,在React中,我试图在返回数据后将变量设置为axios调用。 但是,当控制台随后记录变量时,这是一个承诺。 如何从承诺中获取值并将其设置为变量 let fourPackProducts = axios.get('URL').then(response => { return response.data }) console.log(fourPackProducts) 您正在记录承诺,因为fourPackProducts是承诺。问题的另一部分是,由于promise是异步的

在React中,我试图在返回数据后将变量设置为axios调用。 但是,当控制台随后记录变量时,这是一个承诺。 如何从承诺中获取值并将其设置为变量

    let fourPackProducts = axios.get('URL').then(response => {
    return response.data })
console.log(fourPackProducts)

您正在记录承诺,因为
fourPackProducts
是承诺。问题的另一部分是,由于promise是异步的,所以在promise响应通过之前调用控制台日志。要正确设置变量的承诺响应,请尝试以下操作:

let promiseResponse;
let fourPackProducts = axios.get('URL').then(response => {
   promiseResponse = response.data;
   console.log(promiseResponse);
   return promiseResponse; 
})

假设您希望在以后使用此变量,但如果承诺尚未完成,则该变量将
未定义
。为了在变量被设置为承诺响应后使用它,您需要。

您完全按照自己的要求做了。如果您想要
console.log
正确的数据,请链接另一个,然后像这样

let promiseResponse = axios.get('URL')
  .then(response => response.data)
  .then( data => { console.log( data ); return data });

记住,ajax请求是异步的,因此在ajax请求之后不使用异步处理程序的代码将运行,编译器不会停止并等待请求完成

如果可以打印并返回第一个请求的结果,第二个请求有什么用?不必要,您正在添加另一个步骤,让promiseResponse=axios.get('URL')。然后(response=>{console.log(response.data);return response.data});诚然,我只是想详细说明,为了将该变量作为已解析的承诺进行访问,它必须位于
中。然后
您应该使用es6 async/await var tests=async()=>{let response=await axios.get('URL');console.log(response.data)}test();