限制节点js中并行http请求的数量

嗨,伙计们,我是新的节点js。

我有一个脚本,我开始一个循环内的几个http请求让我们说,我不得不使1000个http请求。 问题是,我只能做一个http请求每IP,我只有10个IP

所以,在10个并行请求之后,我不得不等待一个响应。

如何在不阻止脚本的情况下等待一个来自http请求的响应来启动另一个响应?

我的问题是,如果我执行一段时间等待一个免费的IP我的整个脚本被阻止,我没有收到任何回应。

谢谢。

使用asynchronous模块。

您可以使用async#eachLimit将并发请求限制为10。

 var urls = [ // a list of 100 urls ]; function makeRequest(url, callback) { /* make a http request */ callback(); // when done, callback } async.eachLimit(urls, 10, makeRequest, function(err) { if(err) throw err; }); 

这段代码将遍历URL列表并为每个URL调用makeRequest 。 它将在10个并发请求中停止,并且不会继续执行第11个请求,直到前10个中的一个完成。