P5 for 循环不停

P5 for loop doesnt stop

我想创建一个类似 this 的地图。

我的代码已完成并可以运行,但服务器将我限制为 40 requests/minute,因此我需要放慢请求速度。我发现我的 .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

如果我正确阅读了您的代码(这有点困难,因为它的格式不正确),那么您正在 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 and checking your developer tools的习惯才能理解此类问题。