[英]get url from http.get() response
我需要给我的程序3个URL,然后按给定URL的顺序打印出服务器响应。 我需要一种方法来查看响应来自哪个URL,但是我在文档中找不到任何解决方案。 是否有类似“ response.getURL”的内容? 提前致谢。
var strings = [];
var ended = 0;
for(int i=0; i<urls.length; i++){
http.get(urls[i], function(response){
var wholeData = "";
response.setEncoding('utf8');
response.on('error', console.error);
response.on('data', function(data){
wholeData += data;
});
response.on('end', function(){
ended ++;
strings[???] = data;
if(ended == urls.length)
printStrings();
});
});
}
您正在为http.get()
使用单个URL: urls[i]
。
response
将对应于urls[i]
。
如果要分配strings[i] = wholeData
,则必须更改循环方式,因为该事件处理程序中的i
值将等于urls.length
。 您可以使用类似async
类的库,这样可以避免必须保留请求计数器,但是,如果要保留现有代码,则需要在http.get()
周围使用闭包来捕获i
或仅使用urls.forEach()
:
urls.forEach(function(url, i) {
http.get(url, function(response){
var wholeData = '';
response.setEncoding('utf8');
response.on('error', console.error);
response.on('data', function(data){
wholeData += data;
});
response.on('end', function(){
++ended;
strings[i] = wholeData;
if (ended === urls.length)
printStrings();
});
});
});
或者,您可以通过将strings
作为对象并改为使用strings[url] = wholeData
将结果按url(而不是数组索引strings[url] = wholeData
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.