javascript 如何全局访问axios数据[复制]

cfh9epnr  于 5个月前  发布在  Java
关注(0)|答案(1)|浏览(78)

此问题在此处已有答案

Why is my variable unaltered after I modify it inside of a function? - Asynchronous code reference(7个答案)
3天前关闭。
此帖子已于3天前编辑并提交审核,未能重新打开帖子:
原始关闭原因未解决
我想全局存储从Axios获取的数据,因为我想在多个函数中使用它。当我尝试在调用data()方法的函数内控制台时,我会按预期获得数据。但是当我尝试在函数外控制台数据时,我会将其设置为“undefined",尽管我在函数外全局定义了resp
有谁能告诉我如何全局存储数据或在其他函数中存储数据吗?我可以得到变通方法来获取函数外的数据吗?

let resp;
  const data =  () =>{
     return  axios.get(`http://localhost:3000/s/api/v1/events/data?`)
    
     }

async function data1(){
 resp = await data()
}
data1()

console.log(resp)

字符串
两处的预期数据如下

{
test1233: [ 'abc', 'def' ],
  test1222: [],
  dadad: [ 'adc', 'derf' ],
test123: [ 'abc', 'def' ],
  test12: [],
  dadadaa: [ 'adc', 'derf' ],

}

des4xlb0

des4xlb01#

你的函数是async(它返回一个Promise)。你必须等待Promise完成,例如。

data1().then(x => console.log(resp));

字符串

await data1();
console.log(resp);


(same你已经在你的函数中做的事情:你等待axios调用的Promise)。
也就是说,通过异步函数填充全局状态几乎肯定是徒劳的,因为您无法真正知道函数何时完成。

相关问题