如何在每个时间间隔将数据从api存储到javascript变量中
我有一个api调用,我每5秒调用一次。在每个间隔之后,我想将api调用中的如何在每个时间间隔将数据从api存储到javascript变量中,javascript,jquery,Javascript,Jquery,我有一个api调用,我每5秒调用一次。在每个间隔之后,我想将api调用中的标记存储到js对象/数组中,以便将其传递给函数以绘制图形。我已经声明了一个var-marks=[]并尝试将api中的数据分配给标记,但是当我执行console.log(标记)时在区间循环外,表示未定义 json数据如下所示 { "PersonIds": [ "001", "002" ], "Subjects": [ { "Name": "Maths", "Mark
标记
存储到js对象/数组中,以便将其传递给函数以绘制图形。我已经声明了一个var-marks=[]
并尝试将api中的数据分配给标记,但是当我执行console.log(标记)时代码>在区间循环外,表示未定义
json数据如下所示
{
"PersonIds": [
"001",
"002"
],
"Subjects": [
{
"Name": "Maths",
"Marks": 90
},
{
"Name": "Science",
"Marks": 70
},
]
}
$(document).ready(function (){
//Start the graph
marksGraph();
var marks = []; //Contains marks
var names = [];
var rg, // Storesstartdate and end date range
startDt, // Stores start Date
endDt; // Stores end Date
//Calling the Range API
d3.json('url', function(error,data) {
if(rg != null || rg!= undefined || !error){
rg = data;
startDt = new Date(data.startDt);
endDt = new Date(data.endDt);
//Set Count to zero
var count = 0;
var interval = setInterval(function process(){
if (startDt > fromDt) {
clearInterval(interval);
return
}
console.log("I am coming inside Interval");
var startDate = startDt.toISOString();
var endDate = new Date(startDt.setMinutes(startDt.getMinutes() + 10)).toISOString();
//Calling the API
d3.json("url", function(error,datum) {
if(datum != null){
names = datum.name;
marks = datum.marks;
}
});
count++;
},2500);
console.log(marks);
}
});
console.log(names);
console.log(marks);
由于API调用的异步性质,通常会出现此类问题。你能在调用API时发布你的源代码吗?我猜您得到的值是undefined,因为非阻塞API调用尚未返回任何值。您需要在间隔之外声明数组。请向我们展示代码,而不仅仅是数据。我们不知道为什么它是未定义的,除非你告诉我们它是如何工作的。我猜想这是一个时间问题。但是,如果你不出示相关代码,我们就无法知道。因此,这个问题是无法回答的(除了胡乱猜测),并且将被关闭。我已经添加了代码。请看一看!可能重复的