Длина петли P5 по длине - PullRequest
       19

Длина петли P5 по длине

0 голосов
/ 21 октября 2018

Я зацикливаюсь на .csv, и он работает.

Проблема в том, что мне нужно замедлить цикл, потому что у сервера (позже в моем коде) есть предел запросов.Я пробовал delay () - функции вроде this , но они просто все замедляли.Поэтому я решил использовать localHost, чтобы замедлить сам URL - это работает.

Проблема: это не одна «передача данных» через цикл / задержка / продолжение и т. Д.

Большая часть «данных» проходит через цикл в одно и то же время - поэтому я замедляю их все сразу и все еще достигаю предела сервера.

Вопрос 1: есть ли простой способ отложить () или сказать,цикл, через который могут проходить только одни «данные» одновременно?

Вопрос2: Если нет: я думал об ограничении цикла на .csv-line 1 Чтобы поместить его в другой цикл, повторяющийся построчно - я мог быне понять, как кодировать это - я новичок в P5 и новичок в коде

Мой код

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();   
}         
}

Так что я хочу, чтобы для "j" проходить через отверстие .csvj<Städte.length.Но затем я достигаю своего лимита запросов.

На самом деле мне нужно запросить одну строку .csv / отложить ее / отправить и т. Д.

Как я могу создать перерыв 2 с послекаждая строка в моем .csv?

1 Ответ

0 голосов
/ 21 октября 2018

Обычно я бы рекомендовал использовать функцию 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);
}

Но, честно говоря, это хак, чтобы обойти то, что кажется чрезмерно ограничительной квотой.На твоем месте я бы посмотрел на увеличение твоей квоты.Или, может быть, вы могли бы предварительно обработать данные только один раз вместо того, чтобы каждый раз получать их с нуля?

...