如何在每个时间间隔将数据从api存储到javascript变量中

如何在每个时间间隔将数据从api存储到javascript变量中,javascript,jquery,Javascript,Jquery,我有一个api调用,我每5秒调用一次。在每个间隔之后,我想将api调用中的标记存储到js对象/数组中,以便将其传递给函数以绘制图形。我已经声明了一个var-marks=[]并尝试将api中的数据分配给标记,但是当我执行console.log(标记)时在区间循环外,表示未定义 json数据如下所示 { "PersonIds": [ "001", "002" ], "Subjects": [ { "Name": "Maths", "Mark

我有一个api调用,我每5秒调用一次。在每个间隔之后,我想将api调用中的
标记
存储到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调用尚未返回任何值。

您需要在间隔之外声明数组。请向我们展示代码,而不仅仅是数据。我们不知道为什么它是未定义的,除非你告诉我们它是如何工作的。我猜想这是一个时间问题。但是,如果你不出示相关代码,我们就无法知道。因此,这个问题是无法回答的(除了胡乱猜测),并且将被关闭。我已经添加了代码。请看一看!可能重复的