【问题标题】:P5 loop length by lengthP5 循环长度(按长度)
【发布时间】:2018-10-21 18:37:13
【问题描述】:

我正在循环一个 .csv 文件,它可以工作。

问题是我需要放慢我的循环,因为服务器(稍后在我的代码中)有请求限制。我尝试了像this 这样的延迟()函数,但它们只是减慢了一切。所以我决定给我们一个 localHost 来减慢 URL 本身的速度 - 这很有效。

问题:不是一个“数据”通过循环/延迟/继续等。

许多“数据”同时通过循环 - 所以我一次减慢它们的速度,但仍然达到服务器限制。

问题1:有没有简单的delay()方法,或者说一次只能通过一个“数据”的循环?

问题2:如果不是:我考虑过将循环限制为 .csv-line 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&lt;Städte.length。 但后来我达到了我的请求限制。

事实上,我需要请求 .csv 的一行 / 延迟 / 发送 等等

如何在 .csv 中的每一行之后创建 2 秒的休息时间?

【问题讨论】:

    标签: javascript java loops nested p5.js


    【解决方案1】:

    通常我会推荐使用millis() 函数或frameCount 变量在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);
    }
    

    但老实说,这是一种绕过看起来过于严格的配额的技巧。如果我是你,我会考虑增加你的配额。或者您可以只对数据进行一次预处理,而不是每次都从头开始获取数据?

    【讨论】:

    • 黑客暂时还可以,我已经在尝试获得更高的配额。在那之前:我不知道在哪里使用函数“nextInteraion”以及“对当前索引做一些事情”是什么意思?感谢您的所有帮助
    • @foliran 这意味着,不是在 for 循环中执行此操作,而是使用 nextIteration() 函数和 setTimeout() 函数通过增加每次调用时都会变量。
    • 好吧,我想我明白了。开始“循环”并使用 setTimeout 让它在 1 秒后开始。但我不让它工作。我认为它是 console.log - 我应该在这里改变什么?
    • @foliran 我的代码只是一个例子。您会对索引做任何您想做的事情,在您的情况下可能会请求或处理该索引处的数据?
    • 好的,我明白了。我想我不能使用这个黑客。在这里,我将在 gotData 函数下/中调用函数 nextIteration。 “循环”在 gotData(data) 下调用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 2018-05-31
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多