嗨大家我是节点js的新手。
我有一个脚本,我在循环中启动了几个http请求 假设我必须发出1000个http请求。 问题是我每个IP只能做一个http请求而且我只有10个IP
因此,在10个并行请求之后,我必须等待响应才能生成另一个请求。
如何不阻止来自http请求的脚本响应以启动另一个响应?
我的问题是,如果我执行一段时间等待免费IP,我的整个脚本被阻止,我没有收到任何回复。
感谢。
答案 0 :(得分:21)
使用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;
});
此代码将循环遍历网址列表,并为每个网址调用makeRequest
。它将停止在10个并发请求中,并且不会继续第11个请求,直到前10个请求中的一个完成。