Javascript 无限循环不';行不通

Javascript 无限循环不';行不通,javascript,json,loops,Javascript,Json,Loops,我有一个循环,加载一个json对象,我希望json文件中的数据能够实时显示在我的传单映射中。 当我在json文件中添加值时,jsonData.length会显示更新的lenght,但循环不会增加变量j。 在json文件中添加新值后,如何增加变量j function Loop() { setTimeout(function() { load_js(); jsonData=loadJSON(); //load JSON Data lat =

我有一个循环,加载一个json对象,我希望json文件中的数据能够实时显示在我的传单映射中。 当我在json文件中添加值时,jsonData.length会显示更新的lenght,但循环不会增加变量j。 在json文件中添加新值后,如何增加变量j

function Loop() {
    setTimeout(function() {
        load_js();
        jsonData=loadJSON();  //load JSON Data

        lat = jsonData[j];
        lon = jsonData[j+1];

        var id = Math.floor((Math.random() * 2) + 1);
        jdl = jsonData.length;
        mapUpdater("" + id, lat, lon);


        if (j < jsonData.length) {
            j=j+2;
        }

        Loop();

    }, 1000)
}
函数循环(){
setTimeout(函数(){
加载_js();
jsonData=loadJSON();//加载JSON数据
lat=jsonData[j];
lon=jsonData[j+1];
var id=Math.floor((Math.random()*2)+1);
jdl=jsonData.length;
地图更新程序(“+id,lat,lon);
if(j
您需要更改j的范围。也可以将j添加到循环函数的参数中

function Loop(j) {
  if (j === undefined)
    j = 0;
  setTimeout(function() {

    load_js();
    jsonData = loadJSON(); //load JSON Data

    lat = jsonData[j];
    lon = jsonData[j + 1];

    var id = Math.floor((Math.random() * 2) + 1);
    jdl = jsonData.length;
    mapUpdater("" + id, lat, lon);


    if (j < jsonData.length) {
      j = j + 2;
    }

    Loop(j);

  }, 1000)
}
Loop();
函数循环(j){
如果(j==未定义)
j=0;
setTimeout(函数(){
加载_js();
jsonData=loadJSON();//加载JSON数据
lat=jsonData[j];
lon=jsonData[j+1];
var id=Math.floor((Math.random()*2)+1);
jdl=jsonData.length;
地图更新程序(“+id,lat,lon);
if(j
您需要更改j的范围。也可以将j添加到循环函数的参数中

function Loop(j) {
  if (j === undefined)
    j = 0;
  setTimeout(function() {

    load_js();
    jsonData = loadJSON(); //load JSON Data

    lat = jsonData[j];
    lon = jsonData[j + 1];

    var id = Math.floor((Math.random() * 2) + 1);
    jdl = jsonData.length;
    mapUpdater("" + id, lat, lon);


    if (j < jsonData.length) {
      j = j + 2;
    }

    Loop(j);

  }, 1000)
}
Loop();
函数循环(j){
如果(j==未定义)
j=0;
setTimeout(函数(){
加载_js();
jsonData=loadJSON();//加载JSON数据
lat=jsonData[j];
lon=jsonData[j+1];
var id=Math.floor((Math.random()*2)+1);
jdl=jsonData.length;
地图更新程序(“+id,lat,lon);
if(j
谢谢你们的帮助。 也许我没有充分阐述我的问题

我自己发现了这个问题。 我认为如果条件是问题所在

我认为阵列超出了射程。 这个问题的答案是:

我改变了这一点:

if (j < jsonData.length) {
            j=j+2;
        }
if(j
为此:

if (j < jsonData.length-2) {
            j=j+2;
        }
if(j
谢谢你们的帮助。 也许我没有充分阐述我的问题

我自己发现了这个问题。 我认为如果条件是问题所在

我认为阵列超出了射程。 这个问题的答案是:

我改变了这一点:

if (j < jsonData.length) {
            j=j+2;
        }
if(j
为此:

if (j < jsonData.length-2) {
            j=j+2;
        }
if(j
不用递归函数,只需使用setInterval即可。首先,您必须调用该函数。你应该把
Loop()在函数外部。从技术上讲,无限循环是有效的。@BrandonIbbotson他们为什么会这样?@BrandonIbbotson他们不会。每个调用都将使用自己的堆栈跟踪运行。只需使用setInterval,而不是递归函数。首先,您必须调用该函数。你应该把
Loop()在函数外部。从技术上讲,无限循环是有效的。@BrandonIbbotson他们为什么会这样?@BrandonIbbotson他们不会。每个调用都将使用自己的堆栈跟踪运行。
if(!j)
{}会更快。
if(!j)
{}会更快。