嗨,大家好,我是节点js的新手.
我有一个脚本,我在循环中启动了几个http请求
假设我必须发出1000个http请求.
问题是我每个IP只能做一个http请求而我只有10个IP
因此,在10个并行请求之后,我必须等待响应才能生成另一个请求.
如何在不阻止脚本响应的情况下从http请求启动另一个响应请求?
我的问题是,如果我执行一段时间等待免费IP我的整个脚本被阻止,我没有收到任何响应.
谢谢.
解决方法
为此,请使用
async模块.
您可以使用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个请求中的一个完成.