0
我的目标是每个时间间隔发送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 CB是被处决推出另一批10秒后5请求。
问题是超时似乎不起作用:所有新的sendBathReq都在console.log打印出来后执行。