Моя цель - отправить запрос N на временной интервал и убедиться, что сетевые задержки не повлияют на мой алгоритм. Я сделал эту функцию:node.js: Параллельное выполнение с ограниченным интервалом времени (ограничение скорости)
var results=[];
function sendBatchReq(docs, fromIndex, batchSize, timeout){
var counter=batchSize;
console.log(new Date()+ " executing");
for (var i = fromIndex; i < fromIndex+batchSize; i++) {
var url=docs[i].url;
request(url, function(err, res, data) {
results.push(JSON.parse(data));
counter--;
if(counter==0 && docs.length >=fromIndex+(batchSize*2)){
console.log(new Date()+" next batch");
setTimeout(sendBatchReq(docs,fromIndex+batchSize,batchSize), timeout);
}
});
}
}
sendBatchReq(docs, 0, 5, 10000);
Это должно работать так: Выполнить первые 5 запрос, когда пятый Съ был выполнен запустить другую партию 5 запроса после 10 секунд.
Проблема в том, что тайм-аут, похоже, не работает: все новые sendBathReq выполняются сразу после завершения печати console.log.