将从 api 返回的数据分配给变量 + javascript [duplicate]

Assign data returned from api to variable + javascript [duplicate]

提问人:John Conor 提问时间:4/18/2023 更新时间:4/18/2023 访问量:30

问:

我正在使用 javascript 中的 api 返回一些要分析和可视化的医疗保健数据。我创建了一个函数来访问数据,以便可以在脚本中的其他位置使用它:get_data()

function get_data() {
console.log(vaccination_data[0]);
var vax_data = vaccination_data[0];
console.log(vax_data.city)
return vax_data
}

这在函数中运行良好,我可以将数据及其元素记录到控制台。我遇到的问题是,当我尝试将变量分配给函数外部的变量时,出现错误:returnvax_datavar data = get_data()

"<a class='gotoLine' href='#60:22'>60:22</a> Uncaught TypeError: Cannot read properties of undefined (reading 'city')"

我已经用一个简单的函数进行了测试,它运行良好,例如:

function a() {
   var str = "first";
   return str
}

var string = a()

console.log(string)

谁能告诉我为什么它的工作方式与从 api 返回的数据不同?

完整代码:

var vaccination_data = [];

$.ajax({
  url: "https://health.data.ny.gov/resource/nvtm-yit2.json",
  type: "GET",
  data: {
    "$limit" : 5000,
    "$$app_token" : 'aGFbKDOg0gCeCm2c9Od2EsFjL'
  }
}).done(function(api_data) {
    //console.log(api_data)
  vaccination_data = api_data;

    get_data();
});

function get_data() {
console.log(vaccination_data[0]);
var vax_data = vaccination_data[0];
console.log(vax_data.city)
return vax_data
}

var data = get_data()
console.log(data)

JSFiddle - https://jsfiddle.net/jconoranderson/v3aLx621/15/

javascript jquery ajax 变量 变量赋值

评论

1赞 James 4/18/2023
只有在 ajax 调用完成后,才能访问数据。因此,顶级代码(如 can't access the response)。标准的骗局是 stackoverflow.com/questions/14220321/......var data = get_data()
0赞 John Conor 4/18/2023
我在 javascript 中发现的这个标准关闭和链接响应的问题在于,尽管这有助于我对语言的整体理解,但它并没有完全解决我面临的具体问题......
1赞 James 4/18/2023
将操作api_data的代码放入 .done 函数中,或从 .done 函数中调用其他函数。您(永远)无法从顶级代码访问api_data。您的示例已修改 - jsfiddle.net/xymvwoqn
0赞 John Conor 4/18/2023
谢谢!如果我想在程序中其他位置的另一个函数中使用数据怎么办?有没有一种方法可以在 2 个函数之间异步传递它?我添加了一个函数作为示例 - jsfiddle.net/jconoranderson/65y21g9p/6use_data()
0赞 James 4/18/2023
将数据作为参数传入,而不是使用全局变量。jsfiddle.net/1sf6bz53/1

答: 暂无答案