我正在遍历.csv,它有效。
问题是我需要放慢我的Loop的速度,因为服务器(在我的代码后面)有一个请求限制。我尝试了this之类的delay()函数,但是它们只是使一切变慢了。所以我决定给我们一个localHost来降低URL本身的速度-可以。
问题:不是一个“数据”通过循环/被延迟/继续等等。
许多“数据”是同时通过循环的-因此我立即降低了它们的速度,仍然达到了服务器限制。
问题1:是否有一种简单的方法来进行delay(),或者说一次只能一次传递一个“数据”的循环?
问题2:如果不是:我考虑过将循环限制为.csv行1 把它放在另一个逐行重复的循环中-我不知道如何编码-我是P5的新手,也是Code的新手
我的代码
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('http://localhost:4567/2000/https://api.openrouteservice.org/directions?api_key='+ Key +'&coordinates=' +
lon + ',' + lat + '|11.789879,50.1905748&profile=' + profile + '&preference=' + preference + '&format=geojson', getData);
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();
}
}
因此,我希望for“ j”循环通过孔.csv j<Städte.length
。
但是后来我达到了我的请求限制。
实际上我需要索要.csv的一行/延迟/发送 等等
如何在.csv中的每一行之后创建2秒的间隔?
答案 0 :(得分:0)
通常,我建议使用millis()
函数或frameCount
变量在P5.js中执行计时逻辑。在p5.js标签中搜索这些关键字可以为您带来一堆结果。
但是在您的情况下,您可以使用setTimeout()
函数来触发“循环”的下一次迭代。像这样:
var currentIndex = 0;
function setup() {
nextIteration();
}
function nextIteration(){
console.log('current index: ' + currentIndex);
// Do something with the current index here
currentIndex++;
// Call the nextIteration() function in 1 second
setTimeout(nextIteration, 1000);
}
但是说实话,这是一个绕过似乎过于严格的配额的黑客。如果我是你,我会考虑增加您的配额。或者,也许您可以只对数据进行一次预处理,而不是每次都从头开始获取数据?