P5 for loop不会停止

时间:2018-10-21 15:29:27

标签: javascript java loops p5.js

我想创建一个像this这样的地图。

我的代码已完成并且可以运行,但是服务器将我的请求限制为每分钟40个请求,因此我需要降低请求速度。我发现我的.csv列表中甚至只有一个城市就达到了服务器限制(它应该只发送一个请求)。

错误告诉我,在达到服务器限制之前,我的循环不会停止向服务器发送具有相同城市的请求。

我希望循环仅一次执行一次每个.length

怎么了?

var Städte;
var data;
var profile = 'driving-car'
var preference =  'fastest'

function setup() {
    createCanvas(2000,2000);   
    loadJSON('URL', gotData);
    Städte = loadStrings ('v3.1.csv'); 
}

function gotData(data) {
    var route = data.features;  
    for (var j = 0; j <= 1; j++ ) {
        var citydata = Städte[j].split(/,/);   
        var lon = citydata[3];
        var lat = citydata[2];

        loadJSON('URL', gotData);

        beginShape(); 
        for (var i = 0; i < route[0].geometry.coordinates.length; i=i+500) {
            var x = route[0].geometry.coordinates[i][0];
            var y = route[0].geometry.coordinates[i][1];      
            noFill();
            vertex(x*100-200,-y*100+6000); 
        } 
        endShape();   
    }
}

my code

1 个答案:

答案 0 :(得分:1)

如果我正确地阅读了您的代码(由于格式不正确,这会有些困难),那么您将在gotData()函数内部重做请求:

var lat = citydata[2];

loadJSON('URL', gotData);

beginShape();

所以您的代码是这样的:

  1. 调用setup()函数。
  2. 您调用loadJSON()函数,该函数发出请求,然后调用gotData()函数。
  3. 调用gotData()函数。
  4. gotData()函数中,您再次调用loadJSON(),这又发出了一个请求。
  5. gotData()函数一次又一次地被调用...

这就是为什么您要用尽配额。为什么在那里有第二个电话呼叫loadJSON()?您能删除它吗?

还请注意,您应该养成debugging your code的习惯,并检查developer tools才能理解类似的问题。